2013-02-28 5 views
2

파일을 구문 분석하고 <color = orange> 또는 <color> 중 하나가 내 파일에서 시작되는 곳을 찾고 싶습니다.정규 표현식과 일치하는 파이썬

그런 다음 주황색 값을 꺼내려고합니다.

정규 표현식으로 어떻게하면 좋을까요?

지금까지 나는이 (가 컬러 값을 가지고있는 경우에 보이지 않기 때문에 충분하지 않은)이 : 당신의 문제가 일치하는 정규식입니다

def main(): 
    basefile = open ("base.txt") 
    libfile = open ("file.txt") 
    lines = [] 
    while 1: 
     line = libfile.readline() 
     lines.append("%s" % libfile.readline()) 
     if not line: 
      break 
    inlibrary = 0 
    newlibrary = [] 
    for line in lines: 
     if "<color>" in line: 
+1

에 데이터를 어떤 형식을? 당신이 원하는 것을하는 라이브러리가있을 수 있습니다. – XORcist

+0

XML 형식입니다. – user1328021

+0

먼저 읽어보기, http://docs.python.org/2/library/re.html – lostyzd

답변

0

경우이를 보면 :

>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "<color>asdfsdaf") 
>>> m, m.groups() 
(<_sre.SRE_Match object at 0x7fb0579467b0>, (None,)) 
>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "<color=fuschia>asdfsdaf") 
>>> m, m.groups() 
(<_sre.SRE_Match object at 0x7fb057946738>, ('fuschia',)) 
>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "foobarbaz") 
>>> m #None 
>>> 

하지만 실제로이 작업에는 XML 구문 분석기를 사용해야합니다. 당신이 만발한 XML 파서를 사용하지 않으려면

0

,이 수행해야합니다

import re 
with open("file.txt") as libfile: 
    lines_with_color = [] 
    for line in libfile.readlines(): 
     if re.match("<color(=[^>]+)?>", line): 
      lines_with_color.append(line) 
관련 문제