如何在Python中使用通配符创建搜索项



我想检查文档中是否包含某个术语。然而,有时,这个词有几种形式(复数、过去式等)。

'Hello Worlds'
'Hellos Worlds'
'Jello World'
'Hello Worlded'

如何创建一个搜索词来查找所有实例,例如

'*ello* World*'

,其中*是一个通配符,不一定要包含在单词中。

我找到了fnmatch模块的文档,但是我看不出它如何帮助我搜索文档。

使用正则表达式并循环遍历文件:

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()

我通常会选择正则表达式,但如果出于某种原因您想坚持使用通配符格式,您可以这样做:

from fnmatch import fnmatch
pattern = '*ello* World*'
with open('sample.txt') as file:
    for line in f:
        if fnmatch(line, pattern):
            print(line)

您描述的*语法称为globbing。它不能用于文档,只能用于文件和目录。正如其他人所指出的,正则表达式就是答案。

如果要做复杂的事情,正则表达式是最好的选择。如果你不习惯这些,我认为你也可以用"in"来回答你的具体问题。例如:

x = 'hello world'
if 'ello' in x and 'world' in x':
     print 'matches'
else:
     print 'does not match'

可以使用正则表达式吗?

import re
m = re.search('.*ello', somefile)

more here:

http://docs.python.org/library/re.html

相关内容

  • 没有找到相关文章

最新更新