Был код на python2.7 для получения данных из csv файла который отлично работал, csv файл представлял собой список с числовыми id, разделенными переносом строк:
1 2 3 4 5 6 7 8 |
csv.register_dialect('sqlexport', delimiter='\n', skipinitialspace=True) reader = csv.reader(file, dialect='sqlexport') orders = [] for order_id in reader: if order_id[0].isdigit(): orders.append(order_id[0]) print(orders) |
После перехода на python3.6 начала падать ошибка:
iterator should return strings, not bytes (did you open the file in text mode?)
теперь рабочий код выглядит так (был добавлен decode и обновлен механизм сохранения в переменную):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
encoding = 'utf-8' csv.register_dialect('sqlexport', delimiter='\n', skipinitialspace=True) reader = csv.reader(file.read().decode(encoding), dialect='sqlexport') orders = [] tmp = [] for order_id in reader: if len(order_id) and order_id[0].isdigit(): tmp.append(order_id[0]) else: orders.append(''.join(tmp)) tmp = [] if len(tmp): orders.append(''.join(tmp)) |