2

我正在尝试制作一个简单的翻译器,它可以从搁置模块中的字典中输入英文单词,然后程序逐字翻译输入的单词,然后将结果放入 .txt 文件中。到目前为止,这几乎是我所拥有的。

import shelve

s = shelve.open("THAI.dat")
entry = input("English word")
define = input("Thai word")
s[entry]=define

text_file = open("THAI.txt", "w+")
trys = input("Input english word")

if trys in s:
    print(s[trys])
    part = s[trys]
    text_file.write(part)

这是出现错误的地方。我认为问题在于该部分是一个列表,并且应该是一个能够写入 .txt 文件的字符串。我应该怎么办。我只是一个初学者,所以我可能缺少一些基本的东西。这是错误。

Traceback (most recent call last):
  File "C:\Users\Austen\Desktop\phython fun\thai translator.py", line 29, in <module>
    text_file.write(part)
TypeError: must be str, not list
>>> 

最后我希望能够做到这一点

text_file.readlines() 

然后甚至可以进入文本文件并查看翻译。

4

1 回答 1

1

从您的评论来看,除了没有s[entry]=[define],我认为您需要使用正确的编解码器读写泰语文件。

假设文件thai.dat是​​使用 UTF-8 编写的(假设),您现在需要使用相同的编解码器比较字符串,并使用相同的编解码器写入数据文件。

作为开始,从你的命令外壳试试这一行:

python -c 'import sys; print sys.getdefaultencoding()'

如果它打印ascii,那么您可能需要将默认编码设置为 UTF-8,否则字符串比较将无法正常工作。

此外,您需要以 UTF-8 模式打开输出文件,如下所示:

>>>import codecs
>>>f = codecs.open("THAI.txt", "w+", "utf-8")

然后像往常一样写入这个文件。

于 2012-06-20T02:16:22.883 回答