2015-10-21 22 views
5

python 3.4 kullanıyorum ve bir metin dosyasına bir ad listesi yazmaya çalışıyorum. Listeyi vermek için aşağıdaki kodu kullanabilirsinizPython: ASTII olmayan karakterleri içeren bir listeyi

my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann', 
       'Gunnar Heiðar Þorvaldsson'] 

:

file = open("/Users/.../Desktop/Name_Python.txt", "w") 
file.writelines("%s\n" % item for item in my_list) 
file.close() 

Ama çalışmıyor şöyle listesidir. Python ASCII olmayan karakterler gibi görünmemektedir ve bana aşağıdaki hataları veriyor: Bu sorunu çözmek için bir yol olup olmadığını

"UnicodeEncodeError: 'ascii' codec can't encode character '\u017d' in position 6: ordinal not in range(128)" 

biliyor musunuz? Belki de dosyaları UTF-8/unicode olarak yazmak mümkün müdür?

+2

Hangi sürümü kullanıyorsunuz? –

+0

Çalışıyor. Python 2.7.6'da herhangi bir hata alıyorum. –

+0

Python 3.4 kullanıyorum, sorun bundan geliyor mu? –

cevap

9

). Doğru kodlamayla açmayı deneyebilirsiniz (belki utf-8). Ayrıca, dosyanın sizin için kapatılmasını sağlayan with deyimini kullanmalısınız. Eğer encoding argüman destekler yerleşik işlevi open() kullanabilirsiniz, Python 3.x için

with codecs.open("/Users/.../Desktop/Name_Python.txt", "w",encoding='utf-8') as file: 
    file.writelines("%s\n" % item for item in my_list) 

- Python 2.x için

, sen codecs.open() işlevini yerine open() kullanabilirsiniz. Örnek -

with open("/Users/.../Desktop/Name_Python.txt", "w",encoding='utf-8') as file: 
    file.writelines("%s\n" % item for item in my_list) 
+0

Çalışıyor! Çok teşekkürler =) –

+0

Benim için de çalıştım, bununla uzun zamandır uğraştım! – linusg

2

bu deneyin:

>>> my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann' ,'Gunnar Heiðar Þorvaldsson'] 
>>> f = open("/Users/.../Desktop/Name_Python.txt", "w") 
>>> for x in my_list: 
...  f.write("{}\n".format(x)) 
... 
>>> f.close() 
+0

Çalışmıyor gibi görünüyor. Bu arada Python 3'ü kullanıyorum, belki sorun bundan geliyor? –

+0

@BernEy, python3 ile çalışıp çalışmadığını kontrol ettiysem, bu destek problemi olsaydı uft-8 – Hackaholic

-1

UTF-8 kodlaması kullanmayı deneyin. # - - kodlama: utf-8 - - .py dosyanızın en üstünde koyarak başlayabilirsiniz.

+1

konsolu destekliyor, dosya bile – Eevee

0

En yöntemi ile oynamak olurdu unicodes

my_list = [u'Dejan \u017Divkovi\u0107','Gregg Berhalter','James Stevens','Mike Windischmann' 
      ,u'Gunnar Hei\u00F0ar \u00FEorvaldsson'] 
print my_list[0] 

Çıktı: Dejan Živković konu dosya ortamınız için locale.getpreferredencoding() neyi döndürülür olabilir ascii kodlama (openned ile oluyor ki

+0

ayrıştırmıyor Python 3'te dizeler varsayılan olarak unicode nesnelerdir. Yani 'u' bir op değil. Bu cevap geçerli bir şeydir ama OP'nin problemini çözdüğünü sanmıyorum. –

İlgili konular