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:
4

2 に答える 2

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 パーサーを使用する必要があります。

于 2013-02-28T19:24:06.080 に答える
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)
于 2013-02-28T19:24:45.720 に答える