如何将xml文本与Python中的先前空元素相关联?

用户名

我继承了一些需要在Python中处理的xml。我正在使用xml.etree.cElementTree,并且在将一个空元素之后出现的文本与该空元素的标签相关联时遇到了一些麻烦。xml比我在下面粘贴的要复杂得多,但是我已经简化了它以使问题更清楚(我希望!)。

我想要的结果是这样的字典:

期望的结果

{(9, 1): 'As they say, A student has usually three maladies:', (9, 2): 'poverty, itch, and pride.'}

元组也可以包含字符串(例如('9', '1'))。我真的不在乎这个早期阶段。

这是XML:

test1.xml

<div1 type="chapter" num="9">
  <p>
    <section num="1"/> <!-- The empty element -->
      As they say, A student has usually three maladies: <!-- Here lies the trouble -->
    <section num="2"/> <!-- Another empty element -->
      poverty, itch, and pride.
  </p>
</div1>

我尝试过的

尝试1

>>> import xml.etree.cElementTree as ET
>>> tree = ET.parse('test1.xml')
>>> root = tree.getroot()
>>> chapter = root.attrib['num']
>>> d = dict()
>>> for p in root:
    for section in p:
        d[(int(chapter), int(section.attrib['num']))] = section.text


>>> d
{(9, 2): None, (9, 1): None}    # This of course makes sense, since the elements are empty

尝试2

>>> for p in root:
    for section, text in zip(p, p.itertext()):    # unfortunately, p and p.itertext() are two different lengths, which also makes sense
        d[(int(chapter), int(section.attrib['num']))] = text.strip()


>>> d
{(9, 2): 'As they say, A student has usually three maladies:', (9, 1): ''}

正如你可以在后面的尝试看,p并且p.itertext()是两个不同的长度。的值(9, 2)是我要与key关联(9, 1)的值,而我要与之关联的值(9, 2)甚至都没有出现d(因为zip截断时间越长p.itertext())。

任何帮助,将不胜感激。提前致谢。

克里斯

您是否尝试过使用.tail

import xml.etree.cElementTree as ET

txt = """<div1 type="chapter" num="9">
         <p>
           <section num="1"/> <!-- The empty element -->
             As they say, A student has usually three maladies: <!-- Here lies the trouble -->
           <section num="2"/> <!-- Another empty element -->
             poverty, itch, and pride.
         </p>
         </div1>"""
root = ET.fromstring(txt)
for p in root:
    for s in p:
        print s.attrib['num'], s.tail

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

来自分类Dev

如何将集合中的文本文件与fs集合中的图像相关联?

来自分类Dev

如何将在 java 上创建的新文本视图与其在 android studio 中的 xml 特征相关联?

来自分类Dev

如何将动态添加的输入字段与父元素/ id相关联?

来自分类Dev

您如何将 DOM 元素与 tween.js 相关联?

来自分类Dev

如何将github问题与分支相关联?

来自分类Dev

如何将各个按钮与各个div相关联?

来自分类Dev

如何将路线与包裹相关联?

来自分类Dev

如何将torrent文件与Vuze相关联?

来自分类Dev

如何将音频数据与时间相关联

来自分类Dev

如何将图片与商品ID相关联

来自分类Dev

VersionOne SDK:如何将缺陷与Epic相关联?

来自分类Dev

如何将概率分布与代理相关联 - Anylogic

来自分类Dev

处理html中的文本:将属性与句子相关联

来自分类Dev

如何将多个ID与MS SQL Server中的单个行相关联?

来自分类Dev

如何将第一列中的名称与重复行相关联?

来自分类Dev

如何将rgb值与透视投影中的像素位置相关联?

来自分类Dev

您如何将.exe文件扩展名与Windows中的程序相关联?

来自分类Dev

如何将传单标记与数据库中的对象ID相关联

来自分类Dev

如何将属性与Redis Store中的socket.io对象相关联?

来自分类Dev

如何将密钥文件与FileZilla中的站点相关联

来自分类Dev

如何将本机应用程序与WINE中的文件类型相关联

来自分类Dev

如何将软件与ServiceNow中的服务器CI相关联?最佳实践

来自分类Dev

如何将列表与c#中的每个枚举项相关联

来自分类Dev

如何将数据与 .NET Core 中的 SignalR 连接相关联?

来自分类Dev

如何将图像文件夹与带有图像名称的 xml 文件相关联?

来自分类Dev

如何将 Datadog 中的指标与 Flink 中的执行计划运算符相关联?

来自分类Dev

如何将CUDA核函数中的内核输入数据结构与pycuda中的参数输入相关联

来自分类Dev

如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

Related 相关文章

  1. 1

    Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

  2. 2

    如何将集合中的文本文件与fs集合中的图像相关联?

  3. 3

    如何将在 java 上创建的新文本视图与其在 android studio 中的 xml 特征相关联?

  4. 4

    如何将动态添加的输入字段与父元素/ id相关联?

  5. 5

    您如何将 DOM 元素与 tween.js 相关联?

  6. 6

    如何将github问题与分支相关联?

  7. 7

    如何将各个按钮与各个div相关联?

  8. 8

    如何将路线与包裹相关联?

  9. 9

    如何将torrent文件与Vuze相关联?

  10. 10

    如何将音频数据与时间相关联

  11. 11

    如何将图片与商品ID相关联

  12. 12

    VersionOne SDK:如何将缺陷与Epic相关联?

  13. 13

    如何将概率分布与代理相关联 - Anylogic

  14. 14

    处理html中的文本:将属性与句子相关联

  15. 15

    如何将多个ID与MS SQL Server中的单个行相关联?

  16. 16

    如何将第一列中的名称与重复行相关联?

  17. 17

    如何将rgb值与透视投影中的像素位置相关联?

  18. 18

    您如何将.exe文件扩展名与Windows中的程序相关联?

  19. 19

    如何将传单标记与数据库中的对象ID相关联

  20. 20

    如何将属性与Redis Store中的socket.io对象相关联?

  21. 21

    如何将密钥文件与FileZilla中的站点相关联

  22. 22

    如何将本机应用程序与WINE中的文件类型相关联

  23. 23

    如何将软件与ServiceNow中的服务器CI相关联?最佳实践

  24. 24

    如何将列表与c#中的每个枚举项相关联

  25. 25

    如何将数据与 .NET Core 中的 SignalR 连接相关联?

  26. 26

    如何将图像文件夹与带有图像名称的 xml 文件相关联?

  27. 27

    如何将 Datadog 中的指标与 Flink 中的执行计划运算符相关联?

  28. 28

    如何将CUDA核函数中的内核输入数据结构与pycuda中的参数输入相关联

  29. 29

    如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

热门标签

归档