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

在python中搜索包含通配符的字符串,python,string,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

我想搜索字符串中的通配符

这是我正在使用的代码

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:

但这不起作用。如何在我的字符串搜索中间包含这些通配符? 也许您可以使用正则表达式模拟通配符搜索:

import re

if re.search(r'ESAL.{5}P', line):
     ESAL_V.write(line)
这将检查
中是否有字符串“ESAL”,后跟任何五个字符,后跟“p”。如果找到这样一个字符串,
If
子句为
True
,否则为
False


如果您希望通配符匹配只匹配数字而不匹配任何字符(包括空格、标点符号等),请使用
[0-9]{5}
而不是
{5}

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

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

当然它不起作用;这就是搜索文字星号,Python字符串不包含通配符的概念。您需要切换到。