2

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:\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 に答える