【Python初心者】Pythonで辞書ファイルから値を取り出し、結果を別ファイルに保存する方法がわかりません。
受付中
回答 2
投稿
- 評価
- クリップ 0
- VIEW 260
前提・実現したいこと
Pythonで英単語をキーボードから入力し、辞書ファイルの中から入力した英単語の日本語訳を取り出し、結果を別ファイルに保存するプログラムを作成しているのですが、やり方がわかりません。
実現したいプログラムの流れ
①キーボードから英単語を入力
②辞書ファイルを開く
③入力した英単語が辞書ファイル内にあれば日本語訳を読み込む
④日本語訳を印刷する
⑤印刷した結果を別ファイル(output.txt)に保存する
発生している問題・エラーメッセージ
上記①~⑤をどのように書けばいいか、よくわかりません。
一応自分でできる範囲まで書いてみましたが、検討ハズレのコードかもしれません、、、
↓↓↓↓↓
該当のソースコード
# coding=utf-8
# 調べたい単語を入力
word = input('調べたい単語を入力してください:')
# 辞書ファイルを開く
dic_handle = open("ejdic-u8.txt", encoding="utf-8")
line = dic_handle.readline()
while line:
line = dic_handle.readline()
lib_arr = line.split(“\t”) #各行をtabキーで区切る
if (lib_arr[0] == word): #調べたい単語が一致した場合
for means in lib_arr : #リストの内容を印刷する
print(means)
dic_handle.close()
補足情報
辞書ファイルは「ejdic-u8.txt」というものです。(長いので一部だけ抽出しています↓↓↓)
milkglass 乳白ガラス,くもりガラス
milkiness 乳白色であること 乳状
milkingmachine 搾乳器
milkjelly 牛乳入りフルーツゼリー
milkloaf 乳白色の甘いパン
milkmaid =dairymaid
milkman 牛乳屋,牛乳配達人
milkpowder ドライ(紛)ミルク
このように、1単語1行で、英単語→日本語訳という構成になっています。
実現したい流れ(例)
①キーボードから「milkman」を入力
②辞書ファイル「ejdic-u8.txt」を開く
③入力した「milkman」が辞書ファイル「ejdic-u8.txt」にあれば日本語訳を読み込む
④日本語訳を印刷する(この場合、「牛乳屋,牛乳配達人」)
⑤印刷した結果(「牛乳屋,牛乳配達人」)を別ファイル(「output.txt」という名前のファイル)に保存する
おわかりになる方いらっしゃいましたら、何卒よろしくお願いいたします!
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
これでどうでしょう
# 調べたい単語を入力
word = input('調べたい単語を入力してください:')
# 辞書ファイルを開く
dic_handle = open("ejdic-u8.txt", encoding="utf-8")
line = dic_handle.readline()
line = line.split("\n")
lib_arr = list(map(lambda n:n.split("\t"),line)) # 各行をtabキーで区切る
for i in lib_arr:
if i[0] == word: # 調べたい単語が一致した場合
print(i[1])
dic_handle.close()
わからないことがありましたら教えてください。説明します。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
一度に全部やろうとするとわからなくなるので、
一つ一つ作っては確認してきましょう
①キーボードから英単語を入力
できています
②辞書ファイルを開く
開くこと自体はできていますが、
次のドキュメントのように記述すると、各行を順番に確認していくことができます
7. 入力と出力 — Python 3.8.5 ドキュメント
with open('workfile') as f:
for line in f:
print(line, end='')
注意: 上記の end=''
は今回は不要です (付けると出力の最後で改行されなくなります)
③入力した英単語が辞書ファイル内にあれば日本語訳を読み込む
次の結果を print()
でどうなっているか確認してみましょう:
lib_arr = line.split(“\t”) #各行をtabキーで区切る
print(lib_arr)
④日本語訳を印刷する
3 ができれば print()
で出力できるでしょう
⑤印刷した結果を別ファイル(output.txt)に保存する
次を参考にします
7. 入力と出力 — Python 3.8.5 ドキュメント
with open('workfile') as f:
f.write('This is a test\n')
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
meg_
2020/07/24 20:08
質問のコードは「lib_arr = line.split(“\t”) #各行をtabキーで区切る」の行で「invalid character in identifier」のエラーが出ます。まずエラーを解消しましょう。