2012-06-18 17 views
12

Ayrıca Almanca ve sadece karakterlerini içeren bir dosyayı okumak istiyorum. Ben i Python IDLE işimi çalıştırmayı denediğinizde ama başka bir yerden çalıştırmayı denediğinizde doğru sonucu vermez, bu çalışıyor buBilinmeyen bir kodlamada ASCII olmayan karakterler içeren bir metin dosyası okuyun

>>> import codecs 
    >>> file = codecs.open('file.txt','r', encoding='UTF-8') 
    >>> lines= file.readlines() 

gibi yapabileceği bulundu. Bir fikrin var mı?

+0

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

+1

Dosyanın hangi kodla kaydedildiğine bağlı. eğer UTF-8 değilse, iso8859-1 muhtemelen iyi bir tahmindir. – geoffspear

+0

python3.1. Gerçekten kullandığımız mevcut sürümü nasıl görüyoruz? – indiag

cevap

17

Metni kodlayan karakterin girildiğini bilmeniz gerekir. Bunu önceden bilmiyorsanız, bunu chardet modülüyle tahmin etmeyi deneyebilirsiniz. İlk kurun:

$ pip install chardet 

Ardından ikili modda dosyayı okuma örneğin: Öyleyse

>>> import chardet 
>>> chardet.detect(open("file.txt", "rb").read()) 
{'confidence': 0.9690625, 'encoding': 'utf-8'} 

:

>>> import unicodedata 
>>> lines = codecs.open('file.txt', 'r', encoding='utf-8').readlines() 
+1

Kodekler nereden geliyor? – iMitwe

+0

Dosyanızın üst kısmındaki kodekleri içe aktarmanız gerekir: "import codecs" – duhaime

0

Ben dosyası doğru okunduğunu ancak kullandığı inanıyoruz çıkışta yanlış kodlama. Bu, IDLE'de doğru sonuçları aldığınız gerçeğine dayanmaktadır.

print(line.encode('utf-8'))'u kullanmayı denemeyi öneririm ama korkarım Python 3'ün bytes nesnesini düzgün yazdırıp yazdırmayacağını bilmiyorum.

İlgili konular