【发布时间】:2020-10-15 13:04:25
【问题描述】:
我正在尝试解析具有这种格式的字符串:
sample = '<STATUS="OK" VERSION="B" MESSAGE="Connected in demo mode"><timestamp="1602765370" id="123">'
这样给定一个键我就可以得到关联的值,例如:
parser('STATUS', sample) # 'OK'
parser('MESSAGE', sample) # 'Connected in demo mode'
我尝试过使用 re:
import re
def parser(key, string):
return re.search(f'(?<={key}=)\S+', string).group()
但第一个示例的结果为'"OK"',第二个示例的结果为'"Connected'。如何避免检索引号并获取与每个值关联的完整字符串?提前致谢。
【问题讨论】:
-
这实际上应该是 XML 吗?如果是这样,您是否尝试过使用 XML 解析器?
-
我收到这个数据抛出了 requests.request('GET', url) 并且它以字符串的形式出现(比我的示例大,但格式为 '<...><...><...>')。我尝试使用 xml.etree.ElementTree.fromstring(sample, parser=parser) 但我收到此错误:'xml.etree.ElementTree.ParseError: not well-formed (invalid token)'。我对 xml 不熟悉,所以我没有进一步采用这种方法。你认为 python xml 解析器是比 re 更好的方法吗?
标签: python python-3.x parsing python-re