This question already has answers here:
Regex select all text between tags
                                
                                    (17个答案)
                                
                        
                                上个月关闭。
            
                    
我正在尝试提取xml文件中的字符串,int,char等数据类型列表的值。除了这些数据类型标签之外,还有其他标签。

例如,有如下两个标签

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


我写了下面的代码

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


以及尝试使用时仅获取字符串值

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


获取空值。

最佳答案

为了使您的正则表达式正常工作,只需在逻辑替代项周围添加常规括号,即可显示文字:

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/

10-04 10:15