按 Python 解析

Parse by Python

我的 Python 解析有问题。我有这种 xml 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Trans SYSTEM "trans-14.dtd">
<Trans scribe="maria" audio_filename="agora_2007_11_05_a" version="11" version_date="080826" xml:lang="catalan">
<Topics>
<Topic id="to1" desc="music"/>
<Topic id="to2" desc="bgnoise"/>
<Topic id="to4" desc="silence"/>
<Topic id="to5" desc="speech"/>
<Topic id="to6" desc="speech+music"/>
</Topics>
<Speakers>
<Speaker id="spk1" name="Xavi Coral" check="no" type="male" dialect="native" accent="catalan" scope="local"/>
<Speaker id="spk2" name="Ferran Martínez" check="no" type="male" dialect="native" accent="catalan" scope="local"/>
<Speaker id="spk3" name="Jordi Barbeta" check="no" type="male" dialect="native" accent="catalan" scope="local"/>
</Speakers>
<Section type="report" topic="to6" startTime="111.286" endTime="119.308">
<Turn speaker="spk1" startTime="111.286" endTime="119.308" mode="planned" channel="studio">
<Sync time="111.286"/>
ha estat director del diari La Vanguàrdia,
<Sync time="113.56"/>
ha estat director general de Barcelona Televisió i director del Centre Territorial de Televisió Espanyola a Catalunya,
<Sync time="119.308"/>
actualment col·labora en el diari 
<Event desc="es" type="language" extent="begin"/>
El Periódico
<Event desc="es" type="language" extent="end"/>
de Catalunya.
</Turn>
</Section>

这是我的 Python 代码:

import xml.etree.ElementTree as etree
import os
import sys

xmlD = etree.parse(sys.stdin)
root = xmlD.getroot()
sections = root.getchildren()[2].getchildren()
for section in sections:
 turns = section.getchildren()
 for turn in turns:
    speaker = turn.get('speaker')
    mode = turn.get('mode')
    childs = turn.getchildren()
    for child in childs:
        time = child.get('time')
        opt = child.get('desc')
        extent = child.get('extent')

        if opt == 'es' and extent == 'begin':
            opt = "ESP:"
        elif opt == "la" extent == 'begin':
            opt = "LAT:"
        elif opt == "en" extent == 'begin':
            opt = "ENG:"
        else:
            opt = ""

        if time:
            time = time
        else:
            time = ""

        print time, opt+child.tail.encode('latin-1')

我需要用这个标签标记其他语言发音的单词LANG:例如: spanish words ENG:hello, spanish words,但是当我有 2 个连续的单词用其他语言发音时,我不知道该怎么做:spanish words ENG:hello ENG:man, spanish words。语言的变化在Eventxml标签中。

现在,在输出中我有: actualment col·labora en el diari ESP:El Periódico de Catalunya. 我想要:actualment col·labora en el diari ESP:El ESP:Periódico de Catalunya.

有人可以帮助我吗?

谢谢!

你可以这样做 -

print time, opt+(" " + opt).join([c.encode('latin-1').decode('latin-1') for c in child.tail.split(' ')])

而不是你的print声明