Упс, это не правильный способ чтения закодированного CSV-файла.Вот что вы пытаетесь сделать:
with open('vocabulary.csv',newline='') as f: # open the file with default system encoding
reader = csv.reader(f) # declare a reader on it
for row in reader: # here comes the problem
Я предполагаю, что ваша система использует ASCII для кодировки по умолчанию.Поэтому, когда читатель пытается загрузить строку, строка (из байтов) считывается из файла и декодируется в строку с кодировкой ascii по умолчанию.
И в любом случае, row
является списком, а нестрока, поэтому row.decode
вызвало бы ошибку, если бы вы достигли этой строки.
Правильный путь, если указать кодировку файла при его открытии:
def printcsv():
with open('vocabulary.csv',newline='', encoding='cp866') as f:
reader = csv.reader(f)
for row in reader:
#store in array
Но я не уверендля
print(row)
В зависимости от того, какая кодировка используется sys.stdout
, вам может понадобиться явное кодирование каждой строки из массива:
print([ field.encode(encoding) for field in row ])