【问题标题】:Remove xml tags using Python 3.5使用 Python 3.5 删除 xml 标签
【发布时间】:2015-11-18 17:06:45
【问题描述】:

所以我是使用 python 的新手。我正在尝试从 xml 文档中删除 xml 标记。尝试删除所有<tag2></tag2> 标签,但保留“foo”和“bar”。建议?尽量避免 lxml

  <entry name="xml">
    <tag>
      <tag2>foo</tag2>
    </tag>
    <tag3>
      <tag2>bar</tag2>
    </tag3>
    <tag4>
      <tag2>foo</tag2>
    </tag4>
    <tag5>
      <tag2>bar</tag2>
    </tag5>
  </entry> 

编辑: 这是我需要的输出

entry name="xml">
    <tag>
      foo
    </tag>
    <tag3>
      bar
    </tag3>
    <tag4>
      foo
    </tag4>
    <tag5>
      bar
    </tag5>
  </entry>

【问题讨论】:

  • 在这种情况下,期望的输出是什么?你试过什么?谢谢。
  • 你尝试了什么?你知道docs.python.org/3.5/library/xml.html
  • 您的意思是在不使用 XML 解析器的情况下解析和处理 XML 文档?这样做你不会走得太远......
  • 你不需要移除标签,你只需要解析它并读取节点的文本值...跨度>
  • 我尝试过使用 etree,但我还是很陌生使用 python。这个请求使用 sed 很简单,但我正试图为此目的使用 python 获得更好的知识。

标签: python xml document


【解决方案1】:

您可以使用 xml 遍历元素树。这将创建一个包含所有标签的列表,其中包含文本。

import xml.etree.ElementTree as ET

tree = ET.parse('x.xml')
root = tree.getroot()

text = []
for child in tree.iter():
    if '\n' not in child.text:
        text.append(child.text) 

或者大卫泽门斯的一个更简单的陈述

text = [child.text for child in tree.iter() if not child.text.strip() == '']

【讨论】:

  • text = [child.text for child in tree.iter() if not child.text.strip() = '']?
  • 啊,好多了。谢谢@DavidZemens!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多