получаю ошибки в коде(UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 320: character maps to <undefined>

repunk

Новичок
Пользователь
Июн 18, 2020
1
0
1
Операционка: windows 10
python 3.8
библеотека:
atomicwrites==1.4.0
attrs==19.3.0
colorama==0.4.3
cycler==0.10.0
demjson==2.2.4
kiwisolver==1.2.0
matplotlib==3.2.2
more-itertools==8.4.0
nose==1.3.7
numpy==1.18.5
packaging==20.4
pandas==1.0.4
pluggy==0.13.1
py==1.8.2
pyparsing==2.4.7
pytest==5.4.3
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
wcwidth==0.2.4
xlrd==1.2.0
xmltodict==0.12.0

csv поставлен через pycharm

Суть программы
Необходимо реализовать функцию get_books.

Функция должна принимать имя файла для чтения

Функция должна возвращать данные из файла в виде списка списков как:

[ ['номер', 'название', 'автор', количество, цена], [...], ... ]



  • первую строку из файла 'номер|название|автор|количество|цена' возвращать не надо.
  • количество возвращается как int
  • цена возвращается как float



Сам код

import csv
# создаю функцию которая принимает параметр file_name
def get_books(file_name):
# заношу в переменную csv обьект
books = csv.reader(open(file_name))
# cоздаю переменную count
count = 0
# создаю books_array куда будем добавлять книги
books_array = []
# делаю цикл
for i in books:
# условие, выполняем код если count > 0
if count > 0:


# добавляем в массив books_array книгу где books_array.append([
i[0].split('|')[0],
i[0].split('|')[1],
i[0].split('|')[2],
int(i[0].split('|')[3]),
float(i[0].split('|')[4])

# прибавляем к count единицу
count = count + 1
# возвращаю books_array
return books_array

# вывожу функцию get_books() и передаю туда название файла из которого читаю данные
print(get_books('books.txt'))


Помогите исправить код)
 

Вложения

  • books.txt
    784 байт · Просмотры: 1

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
При открытие файла нужно указать кодировку:

Python:
open(file_name, encoding='utf-8')
 

Форум IT Специалистов