通过输入部分单词,使用python查找列表中的单词

通过输入部分单词,使用python查找列表中的单词,python,list,find,Python,List,Find,鉴于清单: my_list = ['barrow', 'yellow', 'green', 'red', 'mellow'] 我想在列表中找到与“****ow”匹配的单词(“*”是任意字母)。这应该返回“barrow”、“yellow”和“mellow”(包含在列表中的单词,由最后两个字母为“ow”的六个字母组成)尝试以下方法: >>> new_list = [w for w in my_list if (len(w) == 6 and w[-2:] == 'ow')] &g

鉴于清单:

my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
我想在列表中找到与“****ow”匹配的单词(“*”是任意字母)。这应该返回“barrow”、“yellow”和“mellow”(包含在列表中的单词,由最后两个字母为“ow”的六个字母组成)

尝试以下方法:

>>> new_list = [w for w in my_list if (len(w) == 6 and w[-2:] == 'ow')]
>>> new_list
['barrow', 'yellow', 'mellow']

[x代表我的列表中的x,如果x.endswith('ow')和len(x)==6]


这使用了一个列表理解,它获取
my_list
中以“ow”结尾、长度为6的所有元素,这正是您想要的。对于更一般的解决方案,您可以构建一个与所需字符串匹配的正则表达式,并使用
re.match()
,作为条件

解决问题的另一种方法是使用,前提是hay stack是字符串列表。如果不是,您可能需要对字符串进行预转换

>>> import fnmatch
>>> my_list = [2345, 3245, 2343, 8746]
>>> fnmatch.filter(map(str, my_list), "2*4*")
['2345', '2343']
>>> my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
>>> fnmatch.filter(map(str, my_list), "*ow")
['barrow', 'yellow', 'mellow']
您可以使用正则表达式:

>>> import re
>>> my_list = ['barrow', 'yellow', 'green', 'red', 'mellow']
>>> [e for e in my_list if re.search(r'....ow', e)]
['barrow', 'yellow', 'mellow']
>>> [e for e in my_list if re.search(r'2\d4\d', str(e))]
[2345, 2343]

稍后我将发布一个答案,但作为旁注,您应该避免使用
list
作为变量名,因为它是Python中的一种类型。这不是一种代码编写服务;你试过什么,到底有什么问题?我知道。我一直在研究,但我不知道如何面对它。那么你到底“研究”了什么?!到目前为止,您认为用Python解析文本的各种方法中哪一种不合适?你有没有想过搜索“python匹配词”之类的词,这可能会影响你呢?我发布的例子就是这样。在这种情况下它也会工作吗?:my_list=[2345324523438746]。我想在我的_列表中找到编号为[2*4*](23452343)