Доброго времени всем!
Читаю с CSV файла кириллицу, вывожу в файлы и получаю xd0x94xd0xbexd0xb1xd0xb0xd0xb2xd0xb8xd1x82xd1x8, как читать и выводить кириллицу?
Задача:
входной файл csv - взять его шапку и сделать ключи.
Каждая новая строка - значения.
На выходе список со словарями.
Далее список надо вывести в файл, и в тех местах, где использована кириллица в CSV - получается xd0x94xd0xbexd0xb1xd0xb0xd0xb2xd0xb8xd1x82xd1x8.
Код(без кириллицы все работает как надо):
# -*- coding: utf-8 -*-
import csv, codecs
import re
def readCSV(filename):
csvfile = open(filename, 'r') #open file for read
spamreader = csv.reader(csvfile)
dictFromCSV = dict()
i = 0
j = 0
listFroDictWithValueFromCSV = list()
for row in spamreader:
if ';;;' in row[0]: #?????? ?? ?????? ????? - ??? ????????? ??????. ?????? ?????? ???????? ?????? ???????????. ?? 10 ?? 14 ????.
pass
elif i == 0: #?????????? ????? ??????? - ??? ????? ????? ?????? ??????? ??????????? ??????? ?????? ??? ??????
keysForDict = str(row).split(';')
keysForDict = str(keysForDict)
keysForDict = re.sub(r'[^\w\s]+|[\d]+', r'', keysForDict).strip()
keysForDict = str(keysForDict).split(" ")
lenght = len(keysForDict)
i = i + 1
#print keysForDict
else: #????? ???????? ??????? ???????????? ???????? ? ?????????? ??????? ?????(????) ???????? ? ??????? ?? ???? ?????.
row = str(row).split(";")
row = str(row)
row = re.sub(r'[^\w\s]+', r'', row).strip()
#print row
#print ("######################")
row = str(row).split(" ")
#print row
for i in range(0,lenght): #counts row in csv-file
dictFromCSV[keysForDict[j]] = str(row[i])
j = j + 1
i = i + 1
listFroDictWithValueFromCSV.append(dictFromCSV.copy()) #?????????? ??? ??????? ? ???? ??????
j = 0
#print keysForDict
return listFroDictWithValueFromCSV;
Так же буду рад любой критике\советам, как сделать код производительней\читабельней.
P.S. список выводится в файл в другой функции.
P.S.S. Англоязычная винда прокачала комменты, которые были по русски написаны.