如何使用 re 库提取 xml 值中给定标签列表的值? [复制]

Posted

技术标签:

【中文标题】如何使用 re 库提取 xml 值中给定标签列表的值? [复制]【英文标题】:How to extract the values for a list of given tags in the xml value using re library? [duplicate] 【发布时间】:2020-04-19 05:06:49 【问题描述】:

我正在尝试在 xml 文件中提取字符串、int、char 等数据类型列表的值。除了这些数据类型标签之外,还有其他标签。

例如有 2 个标签,如下所示

<string> GenIdeal </string> 
 <int>88</int> 

我已经写了下面的代码

re.findall(r"<string>(.*?)</string>", elem)

并且在尝试使用

时只获取字符串值
re.findall(r"<int|string>(.*?)</int|string>", elem)

获取空值。

【问题讨论】:

这能回答你的问题吗? Regex select all text between tags 也许你想要 标签和 标签之间的两个值?如果是这样, re.findall(r"(.*?)(\d+)", elem) 将返回两者。 感谢您的回复,但任何一种数据类型都会在某个时间点出现,我需要将值存储在变量中。 使用适当的 xml 解析器,它会让生活变得更轻松,并且将来扩展您的代码更简单 【参考方案1】:

要使您的正则表达式正常工作,只需在逻辑替代项周围添加常规括号,因此它将指示文字:

import re

x="""<string> GenIdeal </string> 
 <int>88</int> """

y=list(re.findall(r"<(int|string)>(.*?)</(int|string)>", x))

print(y)

返回:

[('string', ' GenIdeal ', 'string'), ('int', '88', 'int')]

附带说明 - 如果您的用例更复杂 - 请考虑使用 XML 解析器,例如

https://www.geeksforgeeks.org/xml-parsing-python/

或者

https://docs.python-guide.org/scenarios/xml/

【讨论】:

以上是关于如何使用 re 库提取 xml 值中给定标签列表的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章