2014-09-05 145 views
2

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

這是我正在使用的代碼。

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: 

但這不起作用。如何在我的字符串搜索中包含這些通配符?

+0

當然這是行不通的;即尋找字面星號,Python字符串不包含通配符的概念。您需要切換到[正則表達式](https://docs.python.org/2/howto/regex.html)。 – jonrsharpe 2014-09-05 14:00:01

回答

3

也許你可以使用正則表達式來模仿通配符搜索:

import re 

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

這將檢查line的後跟任意五個字符,然後「P」串「ESAL」。如果找到這樣的字符串,if子句是True,否則它是False

如果你希望你的通配符匹配只匹配數字,而不是任何字符(包括空格,標點符號等),使用[0-9]{5}代替.{5}

+0

這工作。謝謝。 – user1837575 2014-09-05 15:15:07

2

如果您不熟悉正則表達式,可以使用模塊fnmatch,它的工作原理與通配符類似,但不能指定星號「*」匹配的字符數。

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