我一直在尝试使用Python LXML库查找和替换XML文本运行。我目前的尝试:
v = ''
position = -1
positions = []
for cur in root.iter('t'):
v = v + cur.text
position = position + len(cur.text)
positions.append(position)
v = v.replace("test string", "this is a test string")
i = 0
start = 0
end = positions[0]
for cur in root.iter('t'):
try:
cur.text = v[start:end]
print cur.text
start = end
i = i + 1
end = positions[i]
except IndexError:
break
简化示例XML:
<t>this is a test</t>
<w>asdfasdfsadf</w>
<t>test<t>
<w>ajsdfkladkjsf</w>
<t> string</t>
此方法将标记的内容放入字符串中,并跟踪发生拆分的索引。然后它对字符串进行替换,并将字符串写回到大致相同位置的XML中。不幸的是,一旦我在Word中打开文件,就会丢失随机空格并添加到其他位置。我知道这个方法可能不起作用,但是使用lxml解析器解决这个问题的最佳方法是什么。
编辑:我不想以字符串形式读取文件并进行编辑,我想编辑文件并保留所有格式。