【问题标题】:Read file in python and get value odoo 9在 python 中读取文件并获取值 odoo 9
【发布时间】:2018-03-12 12:04:02
【问题描述】:

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

如何从上面的例子中得到 NUM 和 CODE?

【问题讨论】:

  • lxmlbeautifulsoup 模块将帮助您解决此问题。

标签: python odoo odoo-10 odoo-9


【解决方案1】:

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

【讨论】:

  • Tnx 寻求帮助,当我尝试获取 DATE="10.10.2017" 时,任何解决方案都只能得到第 10 号,如何获取全文 --> 10.10.2017 ?
  • 试试re.findall(r'DATE="(\d+\.\d+\.\d+)', line) 让我知道它是否有效。
  • 工作正常,任何我都可以举例的网页。总帐
  • 如果你想深入了解regex,我建议从这里开始:docs.python.org/2/library/re.html#regular-expression-syntax快乐编码!
【解决方案2】:

您可以使用标准库(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”的日期)。

【讨论】:

    【解决方案3】:

    您似乎拥有 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,或者在谷歌中搜索“python xml”。

    【讨论】:

    • 对于一个好的黑色幽默答案为什么不使用 xml/xhtml 的正则表达式,请阅读这个 stackoverflow 答案:stackoverflow.com/questions/1732348/…。附言。不要太认真地对待这个评论。答案本身很严肃。 ;-)
    • Tnx 以获得明确的答案。你有什么好的工具或例子来满足我的要求吗?如果有请放在这里。总帐
    • 示例stackoverflow.com/a/49235513/1818279 非常适合我。将您的 xml 文档放在文件“data.xml”中。除了 Python 和 import xml 之外,不需要其他工具。快乐编码:-)
    猜你喜欢
    • 2012-08-30
    • 2018-11-17
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多