2013-08-28 4 views
31

python 스크립트를 사용하여 텍스트 파일의 행을 실행 중입니다. 텍스트 문서에서 태그를 검색하고 텍스트로 태그를 반환하고 싶습니다.파이썬에서 정규식 일치 문자열을 반환하는 방법은 무엇입니까?

정규식 re.match(line)을 실행할 때 _sre.SRE_MATCH 개체를 반환합니다. 문자열을 반환하는 방법은 무엇입니까? 실행하면

import sys 
import string 
import re 

f = open("sample.txt", 'r') 
l = open('writetest.txt', 'w') 

count = 1 

for line in f: 
    line = line.rstrip() 
    imgtag = re.match(r'<img.*?>',line) 
    print("yo it's a {}".format(imgtag)) 

그것은 인쇄 : 당신은 re.MatchObject.group(0)를 사용해야합니다

yo it's a None 
yo it's a None 
yo it's a None 
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578> 
yo it's a None 
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578> 
yo it's a None 
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e578> 
yo it's a <_sre.SRE_Match object at 0x7fd4ea90e5e0> 
yo it's a None 
yo it's a None 

답변

40

.

imtag = re.match(r'<img.*?>', line).group(0) 

처럼 편집 :

는 또한 모든 None의를 제거하기 위해

imgtag = re.match(r'<img.*?>',line) 
if imtag: 
    print("yo it's a {}".format(imgtag.group(0))) 

같은 일을 더 나을 수 있습니다.

+0

http://docs.python.org/2/library/re.html#match-objects를 참조하십시오. – stalepretzel

6

내가 re.findall를 추천 할 것입니다 img 태그 여러 가지가있을 수 있습니다 고려 : 단지 에서 일치하는 문자열의 시작 반환

import re 

with open("sample.txt", 'r') as f_in, open('writetest.txt', 'w') as f_out: 
    for line in f_in: 
     for img in re.findall('<img[^>]+>', line): 
      print >> f_out, "yo it's a {}".format(img) 
1

re.match(pattern, string, flags=0)있다. 문자열에서 의 위치를 ​​으로 지정하려면 대신 re.search(pattern, string, flags=0)을 사용하십시오 (https://docs.python.org/3/library/re.html). 이렇게하면 문자열을 검색하여 첫 번째 일치 객체를 반환합니다. 그런 다음 사람들이 제안한대로 일치하는 문자열을 match_object.group(0)으로 추출 할 수 있습니다.

관련 문제