Python 2.7.3 と BeuatofulSoup を使用して Web サイトのテーブルからデータを取得し、codecs
コンテンツをファイルに書き込むために使用しています。私が収集する変数の 1 つに、時々文字化けがあります。たとえば、Web サイトのテーブルが次のようになっているとします。
Year Name City State
2000 John D’Iberville MS
2001 Steve Arlington VA
したがって、City
変数を生成するときは、常に次のようにエンコードしますutf-8
。
Year = foo.text
Name = foo1.text
City = foo3.text.encode('utf-8').strip()
State = foo4.text
RowsData = ("{0},{1},{2},{3}").format(Year, Name, City, State)
私が作成したカンマ区切りの文字列のリストの内容が呼び出されRowData
、RowHeaders
このように見えるように
RowHeaders = ['Year,Name,City,State']
RowsData = ['2000, John, D\xc3\xa2\xe2\x82\xac\xe2\x84\xa2Iberville, MS',
'2001, Steve, Arlington, VA']
次に、次のコードを使用してこれをファイルに書き込もうとします
file1 = codecs.open(Outfile.csv,"wb","utf8")
file1.write(RowHeaders + u'\n')
line = "\n".join(RowsData)
file1.write(line + u'\r\n')
file1.close()
次のエラーが表示されます
Traceback (most recent call last):
File "HSRecruitsFBByPosition.py", line 141, in <module>
file1.write(line + u'\r\n')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6879: ordinal not in range(128)
私は csv ライター パッケージを使用でき、RowsData
正常に動作します。入りたくない理由により、コーデックを使用して csv ファイルを出力する必要があります。何が起こっているのかわかりません。誰でもこの問題を解決するのを手伝ってもらえますか? 前もって感謝します。