0
我需要翻譯一些WORD文件(.docx),並通過提取'document.xml'文件並使用YandexTranslate翻譯它。在xml文件翻譯後清理翻譯輸出
我的代碼:
import xml.etree.ElementTree as Et
from yandex_translate import YandexTranslate
import zipfile
with zipfile.ZipFile('myfrenchfile.docx') as zf:
zf.extract(r'word/document.xml')
with open('word/document.xml', encoding='utf-8') as f:
tree = Et.parse(f)
root = tree.getroot()
for elem in root.getiterator():
translate = YandexTranslate(
'myyandexkey')
try:
if elem.text:
elem.text = elem.text.replace(elem.text, str(translate.translate(elem.text, 'en')))
except AttributeError:
pass
tree.write('document.xml', encoding='utf-8')
這工作,但因爲我不得不對翻譯「translate.translate()」傳「海峽」工作,我得到填充«{'郎輸出':'fr-en','code':200,'text':['»和類似的。我試過替換方法,如在
str(translate.translate(elem.text, 'en')).\
replace('{\'lang\': \'fr-en\', \'code\': 200, \'text\': [\'', '').\
replace('\']}', '').replace('{\'lang\': \'en-en\', \'code\': 200, \'text\': [\'', '').\
replace('{\'lang\': \'en-en\', \'text\': [\'', '').\
replace('\'], \'code\': 200}', '').replace('{\'code\': 200, \'lang\': \'en-en\', \'text\': [\'', '')\
.replace('{\'code\': 200, \'lang\': \'fr-en\', \'text\': [\'', '').\
replace('{\'code\': 200, \'lang\': \'de-en\', \'text\': [\'', '').\
replace('{\'lang\': \'de-en\', \'code\': 200, \'text\': [\'', '')
如果我打印輸出,它是乾淨的,但是當文件寫入它不是。
有人有解決方案只將翻譯文本寫入新的XML文件?