【问题标题】:Reading and writing text in different languages from a text file in Python从 Python 中的文本文件中读取和写入不同语言的文本
【发布时间】:2022-07-20 08:48:35
【问题描述】:

我正在尝试将单词翻译成另一种语言(如印地语、中文、俄语等)并将它们存储在 .txt 文件中。我已成功对数据进行编码并将其写入文件,但我无法以相同的方式读取它。

例如,如果我将“我”翻译成印地语,我会得到“मुझे”作为结果(这很好)。此外,我的文件中也印有同样的内容。但我无法以同样的方式提取它。

文件中写入的文本:我(英语):(印地语)मुझे

我希望如何提取它:我(英语):(印地语)मुझे

我如何得到它:ÿþme(英语):(印地语)。 A ↔ G

截图:

代码:

import googletrans as GT

text = "me"

translator = GT.Translator()
raw_trans = translator.translate(text, dest="hi", src="en")
translation = raw_trans.text

print(f"Translation : {translation}")

with open("lango.txt", "wb") as writer:
    information = f"{text} (English) : (Hindi) {translation}"
    info = information.encode(encoding="utf-16")
    writer.write(info)

with open("lango.txt", "r") as reader:
    correct_info = reader.read()
    print(correct_info)

请帮我解决这个问题。

【问题讨论】:

标签: python python-3.x encoding google-translate


【解决方案1】:

您打开文件时使用的编码似乎与您保存文件时使用的编码不同 (UTF-16)。

当您没有在open("lango.txt", "r") 中指定编码时,Python 使用默认的系统编码。在 Linux 和 Mac 上,这是 UTF-8,而在 Windows 上,这通常是旧编码,具体取决于所使用的语言(例如,如果语言设置为日语,则它是 Microsoft 的 Shift-JIS 版本)。那么,无论您使用什么平台,当您打开文件时,很可能不是以 UTF-16 格式打开它。

总而言之,您应该在保存文件和再次打开文件时指定编码。现在,我建议您使用 UTF-8,因为它已成为网络和其他地方编码的事实标准。

例如,您可以使用以下代码:

import googletrans as GT

text = "me"

translator = GT.Translator()
raw_trans = translator.translate(text, dest="hi", src="en")
translation = raw_trans.text

print(f"Translation : {translation}")

with open("lango.txt", "w", encoding="utf-8") as f:
    f.write(f"{text} (English) : (Hindi) {translation}")

with open("lango.txt", "r", encoding="utf-8") as f:
    print(f.read())

有关编码工作原理的详细背景信息,请参阅 Joel Spolsky 的博文The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

【讨论】:

  • 谢谢,现在代码可以正常工作了!
【解决方案2】:

西班牙语.milanguage

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2016-10-06
    • 2013-05-31
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多