代码之家  ›  专栏  ›  技术社区  ›  Pointer

用python读取文件并获取值odoo 9

  •  2
  • Pointer  · 技术社区  · 6 年前

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

    3 回复  |  直到 6 年前
        1
  •  4
  •   Austin    6 年前

    这是一种使用 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
    '''
    
        2
  •  4
  •   Daniele Murer    6 年前

    您可以使用标准库(Python 2.5+):

    import xml.etree.ElementTree as ET
    
    for element in ET.parse('data.xml').getroot():
        print(element.attrib['NUM'], element.attrib['CODE'])
    

    where数据。xml包含xml数据。

    如果数据位于字符串中,则可以使用字符串解析器:

    ET.fromstring('Your XML data')
    

    此解决方案不使用regex,非常紧凑且可读,可用于任何数据类型(例如,“gg.mm.aaaa”格式的日期)。

        3
  •  3
  •   Veikko    6 年前

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

    XML代表可扩展标记语言。这意味着XML文件内容应该是可扩展的,而不会中断XML文件的处理。如果您使用regex或纯文本硬编码读取,那么当XML更改时,您的集成将中断。只要正确使用xml工具,这就不是问题。当然,你可以相信未来什么都不会改变,但这已经多次被证明是错误的假设。

    Odoo大量使用XML。Odoo以正确的方式使用XML。使用Odoo编码时,请正确使用XML。

    在丹尼尔·穆勒的回答中,你可以找到正确的方法。请使用它。

    有关在python中处理xml的更多信息,请参阅 https://www.tutorialspoint.com/python3/python_xml_processing.htm ,或在Google中搜索“python xml”。