SORU
18 Mayıs 2011, ÇARŞAMBA


Python: bir metin dosyası Unicode metin yazma?

Google bir doktor veri, işleme ve dosya sonunda bir Wordpress sayfa içine yapıştır ben () için yazma çekiyorum.

ASCII olmayan bazı semboller vardır. Bunları nasıl güvenli bir şekilde HTML kaynak kullanılan sembollere dönüştürebilir miyim?

Şu anda yolda Unicode için her şeyi dönüştürme, bir Python string birlikte katılarak, o zaman yapıyorum:

import codecs
f = codecs.open('out.txt', mode="w", encoding="iso-8859-1")
f.write(all_html.encode("iso-8859-1", "replace"))

Son satırda bir kodlama hatası var:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in 
position 12286: ordinal not in range(128)

Kısmi çözüm:

Bu belki de bir hata olmadan çalışır:

row = [unicode(x.strip()) if x is not None else u'' for x in row]
all_html = row[0]   "<br/>"   row[1]
f = open('out.txt', 'w')
f.write(all_html.encode("utf-8")

Ama sonra gerçek metin dosyası açar, semboller çok seviyorum

Qur’an 

Belki bir metin dosyası dışında yazmam gerekiyor?

CEVAP
18 Mayıs 2011, ÇARŞAMBA


Sadece şeyler onlar ilk doğduklarında nesneleri unicode ve gerektiğinde kodlama çıkarken çözerek unicode nesneleri olabildiğince çok anlaşma.

Eğer unicode dize aslında bir nesne, bir dosyaya yazmadan önce unicode olarak kodlanmış bir dize nesne dönüştürmek için ihtiyacınız olacak:

foo = u'Δ, Й, ק, ‎ م, ๗, あ, 叶, 葉, and 말.'
f = open('test', 'w')
f.write(foo.encode('utf8'))
f.close()

Bu dosyayı tekrar okuduğumda, unicode bir nesne için kod çözme olabilir unicode olarak kodlanmış bir dize: var

f = file('test', 'r')
print f.read().decode('utf8')

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • The Exploiteers

    The Exploite

    4 Ocak 2011