質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

354閲覧

辞書データをテキストファイルに書き込めません!etc.

Ponde_ling

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/24 15:07

概要

参考書に記載されている例題をほぼ引用したプログラムです。英単語を入力して、意味を答えるプログラムです。また知らない単語があれば記憶し、テキストファイルに書き込み、再度実行した際、分からなかった単語も回答できるといったものです。

問題

1、テキストファイルへの書き込みがされず、再度実行した際、記憶していない状態になる(実行中であれば、記憶されている。)

2、テキストファイルの1行目の「crucial 極めて重要な」が知らない単語として実行した際出力される。

補足

以前にはファイルでの問題もありました。[辞書オブジェクトが作れない!]
(https://teratail.com/questions/208019)

初歩的なミスの可能性もありますが、よろしくお願いします。

コード

python3

1import time 2 3words = {} 4 5 6def read(): 7 global words 8 9 with open('data/English_words.txt', 'r', encoding='utf_8' 10 ) as file: 11 lines = file.readlines() 12 13 new_lines = [] 14 for line in lines: 15 line = line.rstrip('\n') 16 17 if line != '': 18 new_lines.append(line) 19 20 separate = [] 21 22 for line in new_lines: 23 sp = line.split('\t') 24 separate.append(sp) 25 words = dict(separate) 26 27#ここまでは正常に動作しています。 28#====================================================================== 29 30def study(): 31 write_lines = [] 32 33 for key, val in words.items(): 34 write_lines.append(key + '\t' + val + '\n') 35 36 write_lines.sort() 37 38 with open('data/English_words.txt', 'w', encoding='utf_8' 39 ) as f: 40 f.writelines(write_lines) 41 42 43if __name__ == '__main__': 44 45 read() 46 print('単語の意味を回答します。') 47 48 while True: 49 50 word = input('英単語を入力してください-->') 51 52 if word == 'OK': 53 study() 54 print('ありがとうございました。') 55 break 56 57 elif word in words: 58 print('「' + words[word] + '」という意味です') 59 else: 60 print('理解できませんでした。新たな単語の場合、意味を入力してください。') 61 meaning = input('意味を入力してください-->') 62 while not meaning: 63 meaning = input('意味を入力してください-->') 64 words[word] = meaning 65 print('記憶中です。お待ちください。') 66 time.sleep(3) 67 68

テキストファイル(English_words.txt)

txt

1crucial 極めて重要な 2subsequent その後の 3devise 考察する 4strain 負担 5distinct 明確な 6incorporate 取り入れる 7eliminate 排除する 8privilege 特権 9retain 記憶する 10seize 掴む 11perceive 知覚する 12prominent 著名な 13integrate 一体化する 14anticipate 予想する 15disturb 邪魔する 16respective それぞれ 17perspective 観点 18magnificent 壮大な

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/08/24 16:16

試したところ問題なく実行できました。
quickquip

2019/08/25 04:23 編集

> テキストファイルの1行目の「crucial 極めて重要な」が知らない単語として実行した際出力される。 この行、係り受けが紛らわしい上に、「具体的に何をしたら」「具体的にどう出力されたのか」が不明です。 質問するときのヒントを上から下まで全部読んだ方がいいと思います。 https://teratail.com/help/question-tips#questionTips3-4-1 ちなみに、私も問題なく実行できていると思います。書いているファイルと実行しているファイルが違う可能性はありませんか。
Ponde_ling

2019/08/25 07:52

ご指摘ありがとうございます。
guest

回答1

0

自己解決

開発ツール、テキストファイル全てを一度閉じ、再度立ち上げた所問題なく作動しました。ありがとうございました。

投稿2019/08/25 07:54

Ponde_ling

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問