Python 3.x 在file-Python中替换字符串
我正在努力改进我在网上看到的一个翻译脚本,这样它就可以接收文档并用它们的翻译替换被“”包围的单词 翻译工作很好,但我的问题来自于我试图进行替换。 它根本不这样做,而是复制了我文件中的最后一个字符 这是我的输入文件:Python 3.x 在file-Python中替换字符串,python-3.x,Python 3.x,我正在努力改进我在网上看到的一个翻译脚本,这样它就可以接收文档并用它们的翻译替换被“”包围的单词 翻译工作很好,但我的问题来自于我试图进行替换。 它根本不这样做,而是复制了我文件中的最后一个字符 这是我的输入文件: 'Who' 'Where' 'How' 'Test' : 'Sun' : 'Water' 这是我的输出: 'Who' 'Where' 'How' 'Test' : 'Sun' : 'Water''''''' 脚本: from googletrans import Translat
'Who'
'Where'
'How'
'Test' : 'Sun' : 'Water'
这是我的输出:
'Who'
'Where'
'How'
'Test' : 'Sun' : 'Water'''''''
脚本:
from googletrans import Translator
import argparse
import os
import re
# init the translator
translator = Translator()
def translate(text, src="en", dest="fr"):
"""Translate `text` from `src` language to `dest`"""
return translator.translate(text, src=src, dest=dest).text
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Simple Python script to translate text using Google Translate API (googletrans wrapper)")
parser.add_argument("target", help="Text/Document to translate")
parser.add_argument("-s", "--source", help="Source language, default is Google Translate's auto detection", default="en")
parser.add_argument("-d", "--destination", help="Destination language, default is English", default="fr")
args = parser.parse_args()
target = args.target
src = args.source
dest = args.destination
if os.path.isfile(target):
# translate a document instead
# get basename of file
basename = os.path.basename(target)
# get the path dir
dirname = os.path.dirname(target)
try:
filename, ext = basename.split(".")
except:
# no extension
filename = basename
ext = ""
#Reading file
with open(target,mode='r+', encoding='utf-8') as file:
file_contents = file.read()
text_to_translate = re.findall("'(.+?)'", file_contents)
text_to_translate = list(set(text_to_translate))
print(text_to_translate)
i = 0
y = 0
translated_text = text_to_translate.copy()
fout = open("out.txt", "wt")
#Translating
while i < len(translated_text):
text = translated_text[i]
translated = translate(text,src=src, dest=dest)
print(translated)
translated_text[i] = translated
i+=1
#Writting to file
for line in file_contents:
while y < len(text_to_translate):
print("Translation number "+str(y))
file.write(line.replace(text_to_translate[y], translated_text[y]))
y+=1
fout.close()
else:
# not a file, do nothing
print("wrong file input")
来自googletrans导入转换器的
导入argparse
导入操作系统
进口稀土
#初始化翻译程序
translator=translator()
def翻译(文本,src=“en”,dest=“fr”):
“”“将`text`从`src`语言翻译为`dest`”
返回translator.translate(text,src=src,dest=dest).text
如果名称=“\uuuuu main\uuuuuuuu”:
parser=argparse.ArgumentParser(description=“使用Google translate API(googletrans包装器)翻译文本的简单Python脚本)”
parser.add_参数(“target”,help=“要翻译的文本/文档”)
parser.add_参数(“-s”,“--source”,help=“源语言,默认为谷歌翻译的自动检测”,default=“en”)
parser.add_参数(“-d”,“--destination”,help=“destination language,默认为英语”,default=“fr”)
args=parser.parse_args()
target=args.target
src=args.source
dest=args.destination
如果os.path.isfile(目标):
#改为翻译文件
#获取文件的基本名称
basename=os.path.basename(目标)
#获取路径dir
dirname=os.path.dirname(目标)
尝试:
文件名,ext=basename.split(“.”)
除:
#没有分机
filename=basename
ext=“”
#读取文件
以open(target,mode='r+',encoding='utf-8')作为文件:
file_contents=file.read()
text_to_translate=re.findall(“(.+?)”,文件内容)
text_to_translate=列表(设置(text_to_translate))
打印(文本到译文)
i=0
y=0
translated\u text=文本\u to\u translate.copy()
fout=打开(“out.txt”、“wt”)
#翻译
而我
看起来您已以只读模式打开文件。当我通常必须进行读写操作时,我打开一个文件进行读操作,打开另一个文件进行写操作;任何未更改的行都会写入写入文件,也会写入已更改的行。我通过提取所有需要编辑的值,然后按您在“w”中所说的打开文件,成功地对其进行了更正。谢谢