2017-11-21 24 views
0

私はPythonを使った本の例を取り上げています。'dict'オブジェクトに 'decode'属性がありません

CSVファイルからheader_rdrという名前のdictReaderオブジェクトにデータを読み取ろうとしています。

header_rdr = DictReader(open('/Users/tcssig/Downloads/data-wrangling-master/data/unicef/mn_headers.csv', 'r')) 

私は、リスト内のすべての辞書の値を読み取るために、リスト内包表記をしてみてください、

header_rows = [h.decode('utf-32') for h in header_rdr] 

を使用すると、私が手にエラーメッセージがある:'dict' object has no attribute 'decode'.

私が渡す前に、文字列を復号化することなく続行するにはどうすればよいです文字列に変換する。

UnicodeDecodeError: - したがって、その名前の反復で'ascii' codec can't decode byte 0xe2 in position 2807: ordinal not in range(128)

+0

'DictReader'は、CSVの各行に対してOrderedDictを生成します。しかし、正しいエンコードモードでファイルを開く必要があります。あなたはPython 2を使用していませんか? –

+0

私はPython 3を使用しており、デフォルトの読み込みテキストモードでファイルを開きます。私は何をすべきか ? – Sarang

+3

['open'](https://docs.python.org/3/library/functions.html#open)呼び出しで、' encoding = 'utf-32''という引数を渡します。 –

答えて

0

csv.DictReader利回りdict

はまた、要素を復号化することなく、私はエラーを得ました。
各dictは、スタイル{<column_header>: <column_value>}のCSVレコードを表します。 ファイルのコンチンクをUTF-32としてデコードするには、エンコーディングをopenの引数として指定します。

header_rdr = DictReader(open(…, 'r', encoding='utf-32')) 
関連する問題