sarın dosya nesne oluşturma (örneğin, errors=ignore
veya errors=replace
gibi), uygun bir errors=
değeri geçebileceği (a olmasını varsayılarak io.TextIOWrapper
alt sınıfı - ve eğer değilse, birde sarmayı düşünün!); Ayrıca, charmap
'dan daha olası bir kodlamayı geçirmeyi düşünün (emin değilseniz, utf-8
her zaman başlangıç için iyi bir yerdir). Örneğin
: read()
işlemi sadece byte'lar
f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
Python 2'de
; daha sonra, onları bir dizgiye dönüştürmek için kod çözme (aslında, baytların aksine karakterleri istiyorsanız). Eğer gerçek kodlama için daha iyi bir tahminde yoksa:
your_string.decode('utf-8', 'replace')
... karakterlerini işlenmeyen yerine ya
your_string.decode('utf-8', 'ignore')
sadece onları görmezden. Bu, gerçek kodlamasını bulmak ve kullanmak (utf-8
'u tahmin etmek yerine) tercih edilir.
Bu, ayrıntılara dayalı olarak bir _lot_'ı değiştirir. Python 2? Python 3? Okunduğunuz dizeleri çözmeyi deniyor musunuz? Nasıl? Etc. –
Python 3. readlines() kullanıyorum – Bob
Tamam - Python 3'ü belirtmek için soruyu güncelledim. Unicode, 2 ile 3 arasında çok büyük farkların olduğu yerlerden biridir; Lütfen ileride açık bir şekilde sürüm belirttiğinizden emin olun. –