わからないこと
エラーがなぜ出るのか、どう直せばエラー無くなるのかがわかりません。エラーメッセージ
に書いてある、ラインを確認しても何が間違いなのかがわからない状態です。初歩的なミスの可能性もありますが、よろしくお願いします。
補足
以前に、テキストでのミスがあり辞書データとして読み書きできなかった問題がありましたが解決しており、今回はテキストでのミスはないと思われます。> https://teratail.com/questions/208019
コード
このプログラムは、質問をしてテキストから答えを持ってくることで、回答するプログラムです。参考書から引用しているため、大幅なコードの間違いは無いと思われます。
python
1class Dictionary: 2 3 def __init__(self): 4 """ 辞書オブジェクトの作成 5 """ 6 self.__load_history() 7 8 def __load_history(self): 9 """ファイルを読み込み、世界史の辞書オブジェクトを作成 10 """ 11 with open('data/world_history.txt', 'r', encoding='utf_8' 12 ) as file: 13 lines = file.readlines() 14 15 new_lines = [] 16 17 for line in lines: 18 line = line.rstrip('\n') 19 if line != '': 20 new_lines.append(line) 21 separate = [] 22 for line in new_lines: 23 sp = line.split('\t') 24 separate.append(sp) 25 self.__history = dict(separate) 26 27 def save(self): 28 """self.historyの内容を加工してファイルに書き込む 29 """ 30 write_lines = [] 31 32 for key, val in self.history.items(): 33 write_lines.append(key + '\t' + val + '\n') 34 with open('data/world_history.txt', 'w', encoding='utf_8') as f: 35 f.writelines(write_lines) 36 37 def get_history(self): 38 return self.__history 39 40 def set_history(self, history): 41 self.__history = history 42 43 history = property(get_history, set_history) 44 45 46if __name__ == '__main__': 47 48 dictionary = Dictionary() 49 print(dictionary.history) 50 dictionary.save() 51
world_history.txt
txt
1古代ギリシアの植民市 ビサンティウム、ネアポリス、マッサリア 2古代ギリシアの三大悲劇詩人 アイスキュロス、ソフォクレス、エウリピデス 3シェイクスピアの四大悲劇 オセロ、マクベス、リア王、ハムレット 4ローマ帝王の五賢帝 ネルヴァ、トラヤヌス、ハドリアヌス、アントニヌス・ピウス、マルクス・アウレリウス・アントニヌス 5カースト制度の身分 バラモン、クシャトリヤ、ヴァイシャ、シュードラ 6ロシアの歴代大統領 エリッツン、プーチン、メドヴェージェフ 7世界四大文明 エジプト文明、メソポタミア文明、インダス文明、黄河文明 8三国志の三国 魏、呉、蜀 9ルネサンス期の三大発明 火薬、羅針盤、活版印刷 10三国時代の三国 高句麗、百済、新羅
エラーメッセージ
Traceback (most recent call last): File "C:/Users/beret/PycharmProjects/SampleProject/histly_dictionaly.py", line 48, in <module> dictionary = Dictionary() File "C:/Users/beret/PycharmProjects/SampleProject/histly_dictionaly.py", line 6, in __init__ self.__load_history() File "C:/Users/beret/PycharmProjects/SampleProject/histly_dictionaly.py", line 25, in __load_history self.__history = dict(separate) ValueError: dictionary update sequence element #0 has length 1; 2 is required
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/01 13:12
2019/09/01 13:15 編集
2019/09/01 13:18
2019/09/01 13:21
2019/09/01 13:21
2019/09/01 13:22