Python通配符在string中search

让我说我有一个列表

list = ['this','is','just','a','test'] 

我怎么能让用户做一个通配符search?

search词:'th_s'

会返回'这个'

正则expression式可能是这个问题的最简单的解决scheme:

 import re regex = re.compile('th.s') l = ['this', 'is', 'just', 'a', 'test'] matches = [string for string in l if re.match(regex, string)] 

使用fnmatch

 import fnmatch lst = ['this','is','just','a','test'] filtered = fnmatch.filter(lst, 'th?s') 

如果你想允许_作为通配符,只需用'?' replace所有的下划线'?' (对于一个字符)或* (对于多个字符)。

如果您希望用户使用更强大的过滤选项,请考虑允许他们使用正则expression式 。

你的意思是任何特定的通配符语法? 通常*代表“一个或多个”字符和? 代表一个。

最简单的方法可能是将通配符expression式转换为正则expression式,然后用它来过滤结果。

你可以试试fnmatch模块,它有一个shell般的通配符语法

或者可以使用正则expression式

导入重新

与Yuushi使用正则expression式相同的想法,但是这使用了re库中的findall方法,而不是列表理解:

 import re regex = re.compile('th.s') l = ['this', 'is', 'just', 'a', 'test'] matches = re.findall(regex, string) 

简单的方法是尝试os.system

 import os text = 'this is text' os.system("echo %s | grep 't*'" % text)