更正大文本文件中放错位置的文本

2024-06-25 01:46:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在对一个大的文本文件进行机械翻译,我想把它自动化,这个文件看起来像这样

<TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>1</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_Duel_Season01_sudden_death_1vs1</alias>
    <replacement>Уникальная массовая дуэль: Битва один на один до полного уничтожения в один раунд</replacement>
  </TEXT>
  <TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>2</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_Duel_Season01_sudden_death_3vs3</alias>
    <replacement>Уникальная массовая дуэль: Битва трое на трое до полного уничтожения в один раунд</replacement>
  </TEXT>
  <TEXT>
    <Unknown1>-65535</Unknown1>
    <autoId>3</autoId>
    <autoId2>0</autoId2>
    <alias>Name2.Boast_MuSinTower_step01</alias>
    <replacement>Первое воплощение Бога Войны: Боль</replacement>

这里的人帮我建立了一个脚本,在我做了一点修改之后,我成功地提取了我需要翻译的文本,使用这个脚本

import re

def loadfile(filename):
    '''
    Returns a string containing all data from file
    '''
    infile = open(filename, 'r')
    infile_string = infile.read()
    infile.close()
    return infile_string


def main():
    #load the files into strings
    original = loadfile("original.xml")


    #grab all of the "TEXT" blocks from the original file
    original_regex = re.compile("(<original>.*?</original>)", re.DOTALL)
    original_list = original_regex.findall(original)


    #a string to write out to the new file
    outfile_string = ""
    for i in range(len(original_list)): #loop through all of the original text blocks
        #build a new string with the replacement text only
        build_string = ""
        build_string += original_list[i]
        build_string += "\n" + " "*4
        outfile_string+=build_string


    #write the outfile string out to a file
    outfile = open("replacement.xml", 'w')
    outfile.write(outfile_string)
    outfile.close()

if __name__ == "__main__":
    main()

现在我有了一个只需要翻译文本的文件(大约30万行文本)

 <replacement>Золотой великан</replacement>
    <replacement>Серкет</replacement>
    <replacement>Предводитель Хакан</replacement>
    <replacement>Посвященный У Кахи</replacement>
    <replacement>Лидер банды Чугуна Хви Бичжок</replacement>
    <replacement>Предводитель Сок Самчжа</replacement>
    <replacement>Глава охранников гробницы</replacement>
    <replacement>Древняя гробница</replacement>
    <replacement>Василиск с крыльями вихря</replacement>

问题是,在使用google translate运行之后,格式会变得非常混乱,有时翻译的产品在标题前只有一个单词,这是不可接受的

<replacement> Golden Giant </ replacement>
    <replacement> Serket </ replacement>
    Hakan <replacement> Leader </ replacement>
    Dedicated <replacement> Kakha </ replacement>
    The gang's leader <replacement> Cast Iron Hwee Bichzhok </ replacement>
    <replacement> Leader Samji Juice </ replacement>
    <replacement> Chapter guards tomb </ replacement>
    <replacement> Ancient tomb </ replacement>
    <replacement> Basilisk with wings swirl </ replacement>

我可以解决其他格式的问题,但我真的不能解决这个问题,任何建议或修改原脚本是欢迎的,谢谢。你知道吗

编辑:我认为“notepad++”中的replace命令可能有帮助,我只是不知道具体如何。 将notepad++添加到标记中。你知道吗

编辑2:我找到了一个非常简单但需要更多修改的解决方案,我打开了文件,搜索了所有的<replacement>字符串,然后删除了它们!现在所有的文本都被正确地集中,我只需要在文档中每一行的开头添加字符串<replacement>。。 现在,我该怎么做?你知道吗


Tags: 文件thetext文本buildstringaliasinfile
1条回答
网友
1楼 · 发布于 2024-06-25 01:46:53

既然您已经在深入研究python,那么有一个好消息:您已经可以用python翻译XML文件了。看看python的Goslate模块,它是Google翻译引擎的接口。你知道吗

首先,使用pip install goslateeasy_install goslate安装goslate,因为它不包括在大多数python发行版中。你知道吗

接下来,您可以要求翻译引擎将字符串翻译成所需的语言,并将翻译后的字符串写入输出文件。只需使用如下代码:

import goslate
gs = goslate.Goslate()

# set your text_to_be_translated here in reading loop
text_translated = gs.translate(text_to_be_translated, target_language,source_language)

您已经翻译了text_to_be_translated,不需要额外的操作。你知道吗

相关问题 更多 >