如何在Python中创建带通配符的搜索词?
我想检查一个特定的词是否出现在文档中。不过,有时候这个词会有好几种形式(比如复数、过去式等等)。
'Hello Worlds'
'Hellos Worlds'
'Jello World'
'Hello Worlded'
我该如何创建一个搜索词,能够找到所有类似的情况呢?
'*ello* World*'
这里的星号是一个通配符,不一定要包含在这个词里。
我找到了一些关于fnmatch模块的文档,但我不太明白它怎么能帮助我在文档中搜索。
5 个回答
3
你提到的 * 这种写法叫做 通配符匹配。它只适用于文件和文件夹,不适合文档。正则表达式,正如其他人提到的,是解决这个问题的好办法。
5
我通常会选择使用正则表达式,但如果你有某种原因想要坚持使用通配符格式,你可以这样做:
from fnmatch import fnmatch
pattern = '*ello* World*'
with open('sample.txt') as file:
for line in f:
if fnmatch(line, pattern):
print(line)
7
使用正则表达式,然后遍历文件:
import re
f=open('test.file.here', 'r')
pattern = re.compile("^[^\s]*ello[^\s]*\sWorld[^\s]*$")
for line in f:
if pattern.match(line):
print line,
f.close()