【问题标题】:Subset a list based on specific strings [closed]基于特定字符串的列表子集[关闭]
【发布时间】:2018-06-06 00:25:51
【问题描述】:

我正在读取一个文件并将其分配给变量“input_kws”。

input_kws = open('words.txt','r')

“input_kws”的内容是:

baseball
basketball
football
tennis
boxing
volleyball

我只是想创建一个新列表,其中只包含包含“ball”的单词。

【问题讨论】:

  • 到目前为止你做了什么?请展示您的方法以及您卡在哪里。

标签: python regex string text


【解决方案1】:

只需检查每个字符串中是否有 'ball'。

input_kws= 'baseball basketball football tennis'.split()

ball_sports = [word for word in input_kws if 'ball' in word]
>>>['baseball', 'basketball', 'football']

或者,您可以使用filter 来获得相同的结果

f = filter(lambda x: 'ball' in x, input_kws) #Returns a generator
ball_sports = list(f)

如果生成器不是你的菜,你总是可以用循环来做

ball_sports = []
for sport in input_kws:
    if 'ball' in sport:
        ball_sports.append(sport)

如果您的列表中还有其他具有子字符串“ball”的运动,这将失败。示例

input_kws= 'baseball basketball football tennis balloon'.split()
f = filter(lambda x: 'ball' in x, input_kws) #Returns a generator
ball_sports = list(f)
>>>['baseball', 'basketball', 'football','balloon']

【讨论】:

    【解决方案2】:

    使用也可以使用正则表达式在字符串中查找球

    import re
    
    for line in open(r"words.txt","r"):
        if re.findall(r"ball",line) ==["ball"]:
            print(line)
    
    baseball
    
    basketball
    
    football
    
    volleyball
    

    【讨论】:

    • 这很好用。谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2013-07-08
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多