首页 > 解决方案 > python的长文本中的特定单词搜索

问题描述

非常基本的问题,但是有没有办法让我在包含我想要的单词的列表中提取字符串?就像是:

wordNeeded=str(input("blue or red?"))

list1=["A blue car", "A blue bike", "A red bike"]

然后它将提取包含wordNeeded中确切单词的字符串?

标签: pythonlistwildcard

解决方案


除其他方式外,您可以使用列表推导:

list1 = ["A blue car", "A blue bike", "A red bike"]
result = [item for item in list1 if wordNeeded in item]
print(result)
# ["A red bike"]

或者,您可以filter结合一个lambda函数来研究:

result = filter(lambda x: wordNeeded in x, list1)
print(list(result))

在这种情况下,后者更复杂,但产生相同的结果。


至于确切的单词,您要么需要在之前拆分每个项目(+最终将其小写):

wordNeeded = "blue"
list1 = ["A blue car", "A blue bike", "A red bike", "bluebells are cool."]

result = [item for item in list1
          if any(wordNeeded.lower() == x.lower() for x in item.split())]
print(result)
# ['A blue car', 'A blue bike']

或者完全使用带有单词边界的正则表达式:

import re
rx = re.compile(r'\b{}\b'.format(wordNeeded), flags=re.I)
result = [item for item in list1 if rx.search(item)]
print(result)

推荐阅读