我正在解析文件,想要找到我文件中<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:
答案 0 :(得分: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解析器来完成这项工作。
答案 1 :(得分: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)