2014-09-05 3 views
2

문자열에서 와일드 카드를 검색하고 싶습니다.파이썬에서 와일드 카드가 포함 된 문자열을 검색하십시오.

다음은 내가 작업하고있는 코드입니다.

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

물론 작동하지 않습니다. 리터럴 별표를 검색하는 경우 파이썬 문자열에는 와일드 카드 개념이 포함되지 않습니다. [정규식] (https://docs.python.org/2/howto/regex.html)으로 전환해야합니다. – jonrsharpe

답변

3

아마 당신은 와일드 카드 검색을 모방하는 정규 표현식을 사용할 수

import re 

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

이 'P'다음에 어떤 5 자 다음에 문자열 'ESAL'에 대한 line 확인합니다. 그러한 문자열이 발견되면 if 절은 True이고, 그렇지 않으면 False입니다. 당신이 당신의 와일드 카드를 원하는 경우

은 (공백, 구두점 등 포함)에만 자리가 아니라 어떤 이상의 문자와 일치 [0-9]{5} 대신 .{5}를 사용하여 일치합니다.

+0

이것은 효과가 있습니다. 고맙습니다. – user1837575

2

일반 표현식에 익숙하지 않은 경우 fnmatch 모듈을 사용할 수 있지만 와일드 카드처럼 작동하지만 별표 '*'가 일치하는 문자 수는 지정할 수 없습니다.

import fnmatch 
if fnmatch.fnmatch("*ESAL*P*",line): 
관련 문제