Python usa la traducción de Google para traducir archivos de subtítulos

Python usa la API de Google Translate para traducir archivos de subtítulos

Los subtítulos en inglés son realmente un dolor de cabeza, así que pasé un día estudiándolos e implementé un código de traducción relativamente simple con Python. Solo unas pocas docenas de líneas

Cargue el módulo primero

pip uninstall googletrans
git clone https://github.com/BoseCorp/py-googletrans.git
cd ./py-googletrans && python setup.py install

Prueba de uso

from googletrans import Translator

# 实例化
translator = Translator(service_urls=['translate.google.cn'])

content = 'Today is a gooday'

print(translator.translate(content, dest='zh-CN').text.encode('utf-8').decode('utf-8'))

La salida esta bien

Idea:
Leer el contenido del archivo por línea y traducir los subtítulos de una línea específica. Es muy simple, pero debes prestar atención al problema de codificación.


from googletrans import Translator
# encoding=utf-8
import argparse


def main(args):
    # 实例化
    translator = Translator(service_urls=['translate.google.cn'])
    f = open(args.fs, 'r+', encoding="utf-8")
    flist = f.readlines()
    f = open(args.fs, 'w+', encoding="utf-8")
    f.writelines(flist)
    for x in range(4, len(flist)):
        if x % 4 == 0:
            print(x)
            flist[x] = translator.translate(flist[x], dest='zh-CN').text.encode('utf-8').decode('utf-8') + "\n"
            print(translator.translate(flist[x], dest='zh-CN').text.encode('utf-8').decode('utf-8'))
            f = open(args.fs, 'w+', encoding="utf-8")
            f.writelines(flist)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.")
    parser.add_argument("--fs", type=str, required=True, help="the fileloacation")
    args = parser.parse_args()
    main(args)

Utilice la demostración:

python   tran.py  --fs  "D:\xiaxiaxia\pycharmtext\a.vtt"

Asuntos que necesitan atención
Lea líneas, proceselas por línea y luego preste atención a la codificación al escribir y abrir. Al escribir, debe agregar un carácter de nueva línea \ n al final para que no haya errores.

El código sigue siendo relativamente simple y las partes interesadas pueden optimizarse en el procesamiento y la concurrencia de io.

Supongo que te gusta

Origin blog.csdn.net/xia_xu_liang/article/details/108694184
Recomendado
Clasificación