2016-08-08 8 views
0

データが大量であり、次のコードを使用してCSVファイルにエクスポートします。CSVファイルにデータをエクスポートすると、エラーで ' xe8'という文字がエンコードされない

with open ('/Users/mz/Dropbox/dis/Programming/zoloft.csv', 
      'w', newline = '') as zolo: 
     zolo = csv.writer(zolo, delimiter =',', quotechar='|') 


     rows = zip(all_rating, all_disorders, all_side_effects, 
        all_comments, all_gender, all_age, all_dosage_duration, all_date) 

     for row in rows:  
      zolo.writerow(row) 

しかし、次のエラーがあります:

zolo.writerow(row) 
UnicodeEncodeError: 'ascii' codec can't encode character '\xe8' in position 179: ordinal not in range(128) 

は私が書いたコードの中にこのエラーを処理する方法はありますか?ありがとう!

+0

が誰かの名前やコメントのように見える[外国アクセント文字]を持っている(http://www.fileformat.info/info/unicode/char/e8 /index.htm)を入力します。 –

答えて

2

csv module, at present, doesn't have Unicode supportですが、あなたのデータセットには明らかにUnicode文字が含まれています。だからあなたができることは、this questionの答えに似たもので、Unicode文字を最も近いASCIIに変換します(テキストは後で判読不能になります)。

私のようなものでいいと思う:

from unidecode import unidecode 
with open('file', 'w', newline = '') as zolo: 
    zolo = csv.writer(zolo, delimiter =',', quotechar='|') 

    rows = zip(all_rating, all_disorders, all_side_effects, 
       all_comments, all_gender, all_age, 
       all_dosage_duration, all_date) 

    for row in rows:  
     zolo.writerow(map(unidecode, row)) 
+0

ありがとうございます!ファイル '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/unidecode/__init__.py "48行目がunidecode_expect_ascii のbytestring = stringのままで、次のエラーがあります。 encode( 'ASCII') AttributeError: 'tuple'オブジェクトに 'エンコード'属性がありません。 – Mary

+0

'zolo.writerow(unidecode(str(row)))'を試してください。 –

+0

ありがとうございました!出力は、いくつかの文字の列( 'o'、 'l'、 'k'など)です。 – Mary

関連する問題