在xml文件中打印子标签

时间:2017-05-26 14:03:39

标签: python

我有一个xml文件,其数据如下所示:

 <SpeechSegment spkid="S0">
  <Word dur="0.22" stime="0.44">oh</Word>
  <Word dur="0.27" stime="1.67">bedankt</Word>
  <Word dur="0.3" stime="2.03">voor</Word>
  <Word dur="0.53" stime="2.61">deelname</Word>
 </SpeechSegment>

我想要做的是计算每段的单词,如果有超过三个单词,则插入另一个&#34; SpeechSegment&#34;标签。所以我的首选输出是这样的:

 <SpeechSegment spkid="S0">
  <Word dur="0.22" stime="0.44">oh</Word>
  <Word dur="0.27" stime="1.67">bedankt</Word>
  <Word dur="0.3" stime="2.03">voor</Word>
  #count is more than 3
  </SpeechSegment><SpeechSegment spkid="S0">
  <Word dur="0.53" stime="2.61">deelname</Word>
 </SpeechSegment>

我尝试使用以下代码完成此操作:

import xml.etree.ElementTree as ET
raw = ET.parse("Interview_short.xml")
root = raw.getroot()
for child in root:
 print(child)

 count_list = 0
 for item in child:
   print(item)
   count_list = count_list + 1
   if count_list > 2:
    #add speech segment tag

我有问题

 print(child) 

给了我这个:

 <Element 'SpeechSegment' at 0x20e3cf8>. 

我正在寻找

 <SpeechSegment spkid="S0">. 

在项目之后添加.text不起作用。对这里出了什么问题的想法?

1 个答案:

答案 0 :(得分:0)

您可以通过在元素上调用 .attrib 来访问标记的属性。在您的情况下, child.attrib 会返回字典 {&#39; spkid&#39;:&#39; S0&#39;}

现在,您可以按照python的正常方式访问字典中的键和值。

child.attrib['spkid']

希望有所帮助。

如果您还询问如何添加新标签,请在您的问题中指明。