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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

17797閲覧

python: 辞書型らしく表示されているデータが 実際はstr型、AttributeError: 'str' object has no attribute 'keys'のエラーを招く。

saya24

総合スコア221

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2020/05/22 07:50

以下のコードで、「AttributeError: 'str' object has no attribute 'keys'」というエラーが list関数の部分で表示されてしまいます。

画像に現れているとおり output_dataという グローバルの変数の中身は
辞書型っぽく表示されているのですが、Type関数で型を確認すると str として表示されます。これが災いしていることは承知しているのですが 対策が分かりません。
ちなみに dict関数を当該グローバル変数にあてがうと
また別のエラー「dictionary update sequence element #0 has length 1:2 is required」を招いてしまいます。

大変申し訳ありませんが どなたか当該グローバル変数に どういった対策を施せばよいのか ご教示頂けないでしょうか?
よろしくお願いします!

Python

1def csv_Out(self, event=None): 2 if (self.btn3['state'] != 'normal'): 3 return 4 5 print(output_data) # ★ 辞書型っぽく画面に出てきてました ★ 6 print(type(output_data)) # ★ <class 'str'> と画面に出てきました★ 7 header = list(output_data[0].keys()) # 列の順番を規定 8 9 with open("output.csv", "w", newline="") as f: 10 writer = csv.DictWriter(f, fieldnames=header) 11 writer.writeheader() # ヘッダーを書き込む 12 #writer.writerows(output_data) # データを書き込む 13 writer.writerows(output_data0) 14 15 tkMB.showinfo("Result","Finished converting !", parent=self.this)

ERROR

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

文字列をそのまま辞書型として扱うことはできません。
見たところJSONのようなので、json.loads(output_data)を使ってはどうでしょうか。

投稿2020/05/22 07:59

x98000

総合スコア1096

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

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

saya24

2020/05/22 08:22

ありがとうございます、ご提示の方式で無事に目的を達成できました。助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問