2013-02-28 91 views
2

我正在解析一個文件,並且想要找到<color = orange><color>在我的文件中開始的任何位置。正則表達式匹配Python

然後我想拉出橙色值。

我如何用正則表達式來做到這一點。

到目前爲止,我有這個(因爲它沒有找地方顏色有一個值的情況下這是不夠的):

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 2013-02-28 19:17:15

+0

它是XML格式。 – user1328021 2013-02-28 19:17:53

+0

請先閱讀本文,http://docs.python.org/2/library/re.html – lostyzd 2013-02-28 19:17:56

回答

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解析器這項工作。

0

如果你不想使用一個完全成熟的XML解析器,這應該這樣做:

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)