import xml.etree.ElementTree as ET from googletrans import Translator import xml.etree.ElementTree as ETree import pandas as pd import csv #csv to xml df= pd.read_csv('Salary Dataset.csv') with open('outputf.xml', 'w') as myfile: myfile.write(df.to_xml()) tree = ET.parse('outputf.xml') for elem in tree.iter(): #print(elem.tag, elem.text) if(elem.text): translator=Translator() translation=translator.translate(elem.text,dest="fr").text #elem.text.replace(elem.text,translation) elem.text=translation #print(elem.text) tree.write('outputfr.xml', xml_declaration=True, method='xml', encoding="utf8") xmlp = ETree.XMLParser(encoding="utf-8") Tree = ETree.parse('outputf.xml',parser=xmlp) #Hit and trial methods #xml='/content/output.xml' #xmltest = ET.fromstring(xml.encode("utf-8")) #Tree = ETree.parse(xmltest) #Tree = ETree.parse('/content/outputfr.xml') root = Tree.getroot() for ele in root: B = {} for i in list(ele): B.update({i.tag: i.text}) A.append(B) df = pd.DataFrame(A) df.drop_duplicates(keep='first', inplace=True) df.reset_index(drop=True, inplace=True) writer = csv.writer(open('600.csv', 'w')) df.to_csv('600.csv') print("XML FILE CONVERTED SUCESSFULLY")

基本上这段代码所花费的时间超过25分钟。有什么方法可以减少这段代码的时间复杂性。在使用翻译功能的地方需要更多时间。[在此输入图片描述][1]

[在此输入图片描述][2]

5 个评论
如有需要,请随时提出修改代码的建议。
我想,与csv相比,通过xml会更快。是否有办法直接翻译它。请帮助。
mzjn
请向我们展示Salary Dataset.csv中的内容(至少几行)。
我在本节中加入了图片,希望对您有所帮助。
从现在开始,我将牢记这一点。我已经做了修改并上传了表格。
python
xml
csv
time-complexity
google-translate
Hiralal Umesh Kumhar
Hiralal Umesh Kumhar
发布于 2022-08-13
1 个回答
mzjn
mzjn
发布于 2022-08-15
已采纳
0 人赞同

使用一个中间的XML文件似乎没有必要。只要用输入文件中每一行的翻译项目创建一个输出文件即可。还要注意,只需要一个 Translator 的实例。下面是你可以做的。

import csv
from googletrans import Translator
translator = Translator()
def translate(s):
    return translator.translate(s, dest="fr").text
with open('dataset.csv', "r") as infile, open('dataset_fr.csv', "w") as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)