正则表达式匹配Python

2024-03-28 14:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解析一个文件,并希望找到文件中<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:

Tags: 文件intxtreadlineif颜色defline
2条回答

如果您不想使用完整的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)

如果您的问题是匹配的正则表达式,请查看它们:

>>> 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解析器来完成这项工作。你知道吗

相关问题 更多 >