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

时间:2018-03-12 12:04:03

标签: python odoo odoo-10 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?

3 个答案:

答案 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”。

相关问题