[英]Regular expression matching 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:
如果您的問題是匹配的正則表達式,請查看它們:
>>> 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解析器,則應該這樣做:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.