初学者 python 翻译器:我无法将 shelve 模块中的列表转换为字符串



我正在尝试制作一个简单的翻译器,从搁置模块中的字典中,我可以用英语输入单词,程序逐字翻译输入,然后将结果放入.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:UsersAustenDesktopphython funthai translator.py", line 29, in <module>
    text_file.write(part)
TypeError: must be str, not list
>>> 

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

text_file.readlines() 

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

从您的评论中,除了没有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")

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

最新更新