2015-04-21 45 views
6

ile ben çizgi var başarısız:csv dosyası writerow yazma UnicodeEncodeError

bir csv dosyasına değerler bir dizi yazar
c.writerow(new_values) 

. Normalde iyi çalışıyor ama bazen bir istisna atar ve çizgiyi csv dosyasına yazmaz. Nedenini nasıl bulabileceğime dair hiçbir fikrim yok.

Bu şu anda işleme benim istisnadır:

 try: 
      c.writerow(new_values) 
     except: 
      print() 
      print ("Write Error: ", new_values) 

Kendi istisna dışında yorumladı ve şöyle der: Python

return codecs.charmap_encode(input,self.errors,encoding_table)[0] 
UnicodeEncodeError: 'charmap' codec can't encode character '\u03b1' in position 14: character maps to <undefined> 
+2

'bir istisna atar 'Hangi istisna kaldırıldı? – That1Guy

+0

Gördüğünüz;) –

+0

Bir istisna görmüyorum. Görüyorum ki * herhangi bir istisna *. Lütfen sorunuzu tam geri izleme ile güncelleyin. – That1Guy

cevap

0

csv modülü de unicode karakterleri işlememesi için tanınıyor. Tüm karakterler ascii kodekine girmedikçe, muhtemelen satırı yazamayacaksınız. Unicodecsv denilen, yerine bakmak isteyebileceğiniz bir (biraz) düşüş var. https://pypi.python.org/pypi/unicodecsv

+0

Yani python ile bir csv dosyasına "α"/Alpha harfi yazmak mümkün değil mi? –

+0

OP, Python 3'ü kullanmaktadır (yazdırma işlevinin kullanımından çıkarılmıştır). Python 3 csv ile unicode kullanma sorunu yoktur. –

+0

Bunun python 3 olması gerektiğine katılmıyorum. Bu yazdırma işlevleri python 2'de gayet iyi çalışır - sadece parens eklerler. – bgm387

10

Tamam, kendim çözüldü:

Sadece eklemek zorunda "kodlama = 'utf-8'" Benim csv.writer hattına:

c = csv.writer(open("Myfile.csv", 'w', newline='', encoding='utf-8')) 
+3

Python 2.7 için çalışmaz – Siddharth

+0

Python 3.4'deki çalışmalar – wolf97084