以下示例如何获取NUM或CODE
lines = filename.split('\n')
for line in lines:
print("CODE is:" + ???);
#CODE is: 1111
#CODE is: 2222
#CODE is: 3333
文件
<FROM ID="1610350010160016">
<PR NUM="1" CODE="1111" />
<PR NUM="2" CODE="2222" />
<PR NUM="3" CODE="3333" />
</FROM>
如何从abowe示例中获取NUM和CODE?
答案 0 :(得分:4)
这是使用regex
的一种方式:
import re
lines = filename.split('\n')
for line in lines:
print('NUM is : {}'.format(''.join(re.findall(r'NUM="(\w+)', line))), end=" ")
print('CODE is : {}'.format(''.join(re.findall(r'CODE="(\w+)', line))))
'''
NUM is : 1 CODE is : 1111
NUM is : 2 CODE is : 2222
NUM is : 3 CODE is : 3333
'''
答案 1 :(得分:4)
您可以使用标准库(Python 2.5 +):
import xml.etree.ElementTree as ET
for element in ET.parse('data.xml').getroot():
print(element.attrib['NUM'], element.attrib['CODE'])
其中data.xml包含XML数据。
如果您拥有字符串中的数据,则可以改为使用字符串解析器:
ET.fromstring('Your XML data')
此解决方案不使用正则表达式,并且非常紧凑和可读,并且适用于任何数据类型(例如,日期格式为&#39; gg.mm.aaaa&#39;)。
答案 2 :(得分:3)
您似乎拥有XML数据,而不仅仅是文本数据。请使用正确的工具进行工作。应使用XML工具读取和解释XML,而不是像Regex或纯文本解析这样的文本工具。即使正则表达式的答案在这个例子中起作用,也是不对的!
XML代表EXTENSIBLE标记语言。这意味着XML文件内容应该是EXTENSIBLE而不会破坏XML文件的处理。如果您使用正则表达式或纯文本对读取进行硬编码,那么当XML更改时,您的集成将会中断。正确使用xml工具,这不是问题。当然,你可以指望将来没有什么会改变,但这已被证明是错误的假设。
Odoo大量使用XML。 Odoo以正确的方式使用XML。在Odoo中编码时,请正确使用XML。
在Daniele Murer的回答中,您可以找到正确的方法。请使用它。
有关在python中处理xml的更多信息,请查看https://www.tutorialspoint.com/python3/python_xml_processing.htm,或在Google中搜索“python xml”。