在python中搜索包含通配符的字符串

时间:2014-09-05 13:55:49

标签: python string

我想在字符串中搜索通配符。

这是我正在使用的代码。

with open('file0001.mbx', 'r') as infile,open("ESAL_V.txt",'a') as ESAL_V, open("ESAL.txt", 'a') as ESAL:
        for line in infile: 
            if (str('ESAL15973P'))in line:
            ESAL_V.write(line)
            elif line.startswith("ESAL"):
                ESAL.write(line)

我想用通配符替换字符串搜索中的几个字符。这就是我想要搜索的内容

if (str('ESAL*****P'))in line:

但这不起作用。如何在我的字符串搜索中包含这些外卡?

2 个答案:

答案 0 :(得分:3)

也许您可以使用正则表达式来模仿通配符搜索:

import re

if re.search(r'ESAL.{5}P', line):
     ESAL_V.write(line)

这会检查line字符串' ESAL'接着是五个字符,然后是' P'。如果找到这样的字符串,则if子句为True,否则为False

如果您希望您的通配符匹配仅匹配数字而不是任何字符(包括空格,标点符号等),请使用[0-9]{5}而不是.{5}。< / p>

答案 1 :(得分:2)

如果您不熟悉正则表达式,可以使用模块fnmatch,它的工作方式类似于通配符,但是您不能指定星号'*'匹配的字符数。

import fnmatch
if fnmatch.fnmatch("*ESAL*P*",line):