簡體   English   中英

如何為自閉合標簽之間的文本解析.trs XML 文件?

[英]How to parse .trs XML file for text between self-closing tags?

我有這樣的文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Trans SYSTEM "trans-14.dtd">
<Trans scribe="MSPLAB" audio_filename="Combine001" version="5" version_date="110525">
<Episode>
<Section type="report" startTime="0" endTime="2613.577">
<Turn startTime="0" endTime="308.0620625">
<Sync time="0"/>

<Event desc="music" type="noise" extent="instantaneous"/>

<Sync time="2.746"/>
TARGET_TEXT1
<Sync time="5.982"/>
TARGET_TEXT2

</Turn>
</Section>
</Episode>
</Trans>

這是否被認為是格式良好的 xml 文件? 我正在嘗試在 Python 中提取TARGET_TEXT1TARGET_TEXT2 ,但我不明白這些內容屬於自閉標簽之間的位置。 我在這里看到了另一個帖子,但它是在 Java 中完成的。

使用ElementTree中的itertext

import xml.etree.ElementTree as ET

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

data = [text.strip() for node in root.findall('.//Turn') for text in node.itertext() if text.strip()]
print(data)

Output:

['TARGET_TEXT1', 'TARGET_TEXT2']

更新:如果你想要字典為 output 試試這個:

data = {float(x.attrib['time']): x.tail.strip() for node in root.findall('.//Turn') for x in node if x.tail.strip()}
#{2.746: 'TARGET_TEXT1', 5.982: 'TARGET_TEXT2'}

另一種方法是通過 parsel 使用xpath

從解析導入選擇器

#xml is wrapped into a variable called data
selector = Selector(text=data, type="xml")
selector.xpath(".//Turn/text()").re("\w+")
['TARGET_TEXT1', 'TARGET_TEXT2']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM