读取 python 中的文件并获取值 odoo 9

Read file in python and get value odoo 9

在下面的示例中如何获取 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?

这是使用 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
'''

你可以使用标准库(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')

此解决方案不使用正则表达式,非常简洁易读,适用于任何数据类型(例如,'gg.mm.aaaa' 格式的日期)。

您似乎有 XML 数据,而不仅仅是文本数据。请使用正确的工具来完成这项工作。 XML 应该使用 XML 工具来阅读和解释,而不是像 Regex 或纯文本解析这样的文本工具。即使正则表达式答案在此示例中有效,它也不正确!

XML 代表可扩展标记语言。这意味着 XML 文件内容应该是可扩展的,而不会中断 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"。