在数据输入错误之后,我的XML看起来有点像这样:
<lift>
<header> ... </header>
<entry>
<lexical-unit>
<form lang="grt"><text>Apdala /Apanga</text></form>
</lexical-unit>
<trait name="morph-type" value="phrase"/>
<sense>
<definition>
<form lang="hi"><text>स्वयं</text></form>
</definition>
</sense>
</entry>
<entry>
...
</entry>
⋮
</lift>
text
下的<form lang="grt">
元素中有正斜杠我希望在斜杠上分割这个字段(并修剪空格)并创建一个全新的entry
元素复制entry元素的其余内容,但在上面的例子中,Apalda
作为一个条目的文本,Apanga
作为另一个条目的文本。可能没有正斜杠,在这种情况下保持条目不变,或者不止一个,在这种情况下为该字符串的每个标记创建一个新的entry
。
我不介意我用什么语言或脚本来做这件事,但是不要下载任何大型框架等等会很好。这是一次性的工作,不要指望这样做再次。我正在使用Ubuntu 14.04并且已经安装了常用的开发人员工具。
答案 0 :(得分:0)
以下是python中的答案
import xml.etree.ElementTree as etree
from copy import deepcopy
tree = etree.parse('my xml file')
root = tree.getroot()
entries = root.findall('entry')
for entry in entries:
problem_string = entry.find('lexical-unit').find('form').find('text').text
tokens = problem_string.split('/')
for token in tokens:
entry.find('lexical-unit').find('form').find('text').text = token.strip()
if token != tokens[-1]:
entry = deepcopy(entry)
root.append(entry)
tree.write('my parsed xml file', 'UTF-8')
它找到问题字符串并将其拆分在斜杠上,然后,对于每个标记,将其剥离并将其插回到条目中的相同位置,从而创建条目的深层副本。