HTML Webサイトを読んで、「Amiel、Henri-Frédéric」などの名前のリストを取得したとします。
名前のリストを取得するために、次のコードを使用してhtmlをデコードします。
f = urllib.urlopen("http://xxx.htm")
html = f.read()
html=html.decode('utf8')
t.feed(html)
t.close()
lista=t.data
この時点で、変数listaには次のような名前のリストが含まれています。
[u'アバタントゥオノ、ディエゴ'、...、u'アミエル、アンリ-フレデリック']
今私はしたい:
- これらの名前をDataFrame内に配置します。
- DataFrameをcsvファイルに保存します。
- DataFrameを介してPythonでcsvを読み取る
簡単にするために、上記の名前だけを考慮して、手順1〜3を完了しましょう。次のコードを使用します。
name=u'Amiel, Henri-Fr\xe9d\xe9ric'
name=name.encode('utf8')
array=[name]
df=pd.DataFrame({'Names':array})
df.to_csv('names')
uni=pd.read_csv('names')
uni #trying to read the csv file in a DataFrame
この時点で、次のエラーが発生します。
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 67: invalid continuation byte
上記のコードの最後の行を次のように置き換えた場合:
print uni
DataFrameを読み取ることはできますが、この問題を処理する正しい方法ではないと思います。
この議論について他のユーザーから投稿された多くの質問を赤字にしましたが、これを解決することはできませんでした。