UTF-8 Python 2.6 csv dosyaları için destek genel Unicode/
Python ile csv modülü UTF-8/Unicode söz konusu olunca düzgün çalışmıyor. Diğer web sayfalarında Python documentation ve, belirli durumlarda, iş parçacıkları buldum ama ne kadar idare ediyorsun anlamak ve uygun parçacığını kullanmak zorunda.
Nasıl ve dizeleri ve Unicode dizeleri okumak yazabilirim .csv "sadece" Python 2.6. çalışan dosyaları Ya bu basit bir çözümü olan Python 2.6 bir sınırlama var mı?
CEVAP
Unicode http://docs.python.org/library/csv.html#examples verilen okumak için örnek kod Python 2.6 ve 2.7 ile çalışmıyor gibi eskimiş gibi görünüyor.
Burada utf-8 ile çalışır UnicodeDictReader
izler ve diğer kodlamalar ile olabilir, ama ben sadece utf-8 giriş üzerinde denediler.
Kısacası fikir csv satır csv.reader
alan bölündü sonra Unicode decode etmektir.
class UnicodeCsvReader(object):
def __init__(self, f, encoding="utf-8", **kwargs):
self.csv_reader = csv.reader(f, **kwargs)
self.encoding = encoding
def __iter__(self):
return self
def next(self):
# read and split the csv row into fields
row = self.csv_reader.next()
# now decode
return [unicode(cell, self.encoding) for cell in row]
@property
def line_num(self):
return self.csv_reader.line_num
class UnicodeDictReader(csv.DictReader):
def __init__(self, f, encoding="utf-8", fieldnames=None, **kwds):
csv.DictReader.__init__(self, f, fieldnames=fieldnames, **kwds)
self.reader = UnicodeCsvReader(f, encoding=encoding, **kwds)
Kullanımı (kaynak dosya kodlama utf-8):
csv_lines = (
"абв,123",
"где,456",
)
for row in UnicodeCsvReader(csv_lines):
for col in row:
print(type(col), col)
Çıkış:
$ python test.py
<type 'unicode'> абв
<type 'unicode'> 123
<type 'unicode'> где
<type 'unicode'> 456
Python (ekstra semboller içeren bir di...
Python unicode dizesi aksan kaldırmak ...
Denklik destek için şık yolları ("...
Nasıl Unicode olanları yerine string N...
Nasıl diğer dosyaları kullanmak için h...