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

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

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

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

Q&A

解決済

1回答

2246閲覧

python3でtextデータからディクショナリを生成

hiroaki7

総合スコア15

Python 3.x

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

0グッド

0クリップ

投稿2018/11/02 17:39

#####やりたいこと
#テキストデータ(.txt)からディクショナリを作成する。

python3

1with open('personal.txt', 'r', encoding = 'utf_8') as file: 2 lines = file.readlines() 3new_lines =[] 4count=0 5for line in lines: 6 new_lines.append(line) 7 8print(new_lines) 9print() 10 11separate = [] 12for line in new_lines: 13 sp=line.split('\t') 14 separate.append(tuple(sp)) 15 16separate1 = [] 17separate2 = [] 18for line in separate: 19 print() 20 separate1.append(line[0]) 21 separate1.append(line[len(line)-1]) 22 23 separate2.append(tuple(separate1)) 24 separate1 = [] 25 26print(separate2) 27words = dict(separate2) 28print(words)

######作ったディクショナリ

{'\ufeff名前\u3000': '○○○○\n', '年齢\u3000': '○○歳\n', '性別\u3000': '男\n', '血液型\u3000': '○型\n', '星座\u3000': '○○座\n', '利き手\u3000': '右\n', '身長\u3000': '○○○cm\n', '体重\u3000': '○○kg\n', '出身地\u3000': '○○県\n', '誕生日\u3000': '○月○日\n', '視力\u3000': '0.7\u30000.4'}

#解決したいこと
ディクショナリの中に余分な\ufeffや\nや\3000が入ってきてしまいwords['名前']のような検索ができなくなっているので、\ufeffや\nや\3000をなくしたいです。

#試したこと
replaceでの置き換え

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

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

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

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

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

guest

回答1

0

ベストアンサー

入っているものは、それぞれ

  • \ufeff

BOMつきUTF-8のBOM

  • \u3000

全角スペース

  • \n

改行文字

でして、それほど特殊な文字ではありません。「わかりやすいように」辞書の一部などとして表示される場合(厳密にはstr.repr()で文字列に変換された場合)、そのような表示になります。

対策としては、

  • BOMに関しては読み込み時の文字コードにutf_8_sigを指定すれば解消されます
  • 全角スペースと改行は、最終的にキーと値に対して処理するならstr.rstrip()というメソッドで取り除けます

どこでどう処理するかは少し悩みどころですが、たとえば

python

1 separate2.append(tuple(x.rstrip() for x in separate1))

とすれば消えはします。

投稿2018/11/02 18:20

hayataka2049

総合スコア30933

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

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

hiroaki7

2018/11/05 06:48

ありがとうございます。無事解決しました。 追加質問なのですが、 '視力': '0.7\u30000.4'のところだけ0.7と0.4の間に空白を入れていると\u3000が残ってしまうのですが取り除く手段はありますか? ご教授いただければ幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問