【问题标题】:Extract attributes and text from xml file with python [duplicate]使用python从xml文件中提取属性和文本[重复]
【发布时间】:2014-07-01 23:30:50
【问题描述】:

我有一个如下所示的 xml 文件:

<elements>
   <topic id1=111 id2=222>
      <title>title1</title>
      <topic id1=333 id2=444>
         <title>title2</title>
      </topic>
      <topic id1=555 id2=666>
         <title>title3</title>
      </topic>
   </topic>
   <topic id1=777 id2=888>
      <title>title3</title>
   </topic>
</elements>

我需要标题元素中的所有文本以及所有 id1 和 id2 属性作为输出,如下所示:

[[title1,111,222],[title2,333,444],...]

稍后我会将它们放在一个 csv 文件中,但我知道该怎么做,我很困在这个文件中。我看过像one 这样的帖子,但我似乎不想一次从所有人那里获取信息。我正在使用 python 3.3 以防万一。任何想法都非常感谢。

谢谢!!

【问题讨论】:

  • 我真的不知道它是否可以被认为是重复的,因为涉及的所有子元素和所需的迭代(?)。
  • 好吧,要么就是这样,要么投票结束,因为你没有尝试任何事情。无论哪种方式,“我如何在 Python 中读取 XML”的答案都在您链接的答案中。
  • 不是一个有效的 xml 文件元素...

标签: python python-3.x


【解决方案1】:

Python 2.7.5

text = '''<elements>
   <topic id1=111 id2=222>
      <title>title1</title>
      <topic id1=333 id2=444>
         <title>title2</title>
      </topic>
      <topic id1=555 id2=666>
         <title>title3</title>
      </topic>
   </topic>
   <topic id1=777 id2=888>
      <title>title3</title>
   </topic>
</elements>'''

import BeautifulSoup as bs

results = []

soup = bs.BeautifulSoup(text)
topics = soup.findAll('topic')

for x in topics:
    e = []
    e.append(x.find('title').text)
    e.extend( a[1] for a in x.attrs )
    results.append(e)

print results

[[u'title1', u'111', u'222'], [u'title2', u'333', u'444'], [u'title3', u'555', u'666'], [u'title3', u'777', u'888']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多