如何使用 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 值中给定标签列表的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 的列表值中添加特定字符?

如何从 in_addr 值中获取端口?

如何使用 PHP 从 XML“链接”标签中提取“href”属性?

当我从参数接收到 Iterable 时,如何使用带有 java8 的 Lamba 表达式从给定值中找到最接近的数字? [复制]

如何从 XML 中仅提取标签名称(而不是值),最终使用 XPath

93解析库之re,Beautifulsoup