Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/560: Рейтинг темы: голосов - 560, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9

UnicodeDecodeError: 'utf-8' codec can't decode byte

10.12.2018, 15:21. Показов 119122. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: в файле product.csv с товарами вида №;Наименование;Магазин;Стоимость, вывести информацию, упорядоченную по стоимости
Что должно быть: https://pp.userapi.com/c846420... jD-yd0.jpg
Что получается: http://ipic.su/img/img7/fs/kiss_1kb.1544444137.png

Код в VS Code (который работает): https://pp.userapi.com/c846420... 2rYZr0.jpg
Код в IDLE Python'a (который не работает): http://ipic.su/img/img7/fs/kis... 444249.png

encoding="utf-8" выдает ошибку: http://ipic.su/img/img7/fs/kis... 444448.png

Помогите, пожалуйста, второй день голову ломаю
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2018, 15:21
Ответы с готовыми решениями:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 5: invalid continuation byte
Я чайник. Новичок на Пайтон, уже изучаю веб-приложения, помогите пожалуйста! Я формирую файл с таким содержанием: from flask import...

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed
Привет всем! При компиляции скрипта в ехе вышла такая ошибка,пытался найти символ-не вышло. Подскажите,пожалуйста ,в чем может быть...

'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Работаю с библиотеками PIL и telebot В чем может быть проблема ? Ошибка - 'utf-8' codec can't decode byte 0xff in position 0:...

17
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.12.2018, 15:50
Цитата Сообщение от uaoasdgvoasgdco Посмотреть сообщение
encoding="utf-8" выдает ошибку
Над чем вы голову ломаете? Если файл требует указания utf-8 кодировки (как в вашем первом примере), а вы ее не указываете (во втором примере) - логично, что будет ошибка декодирования.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 16:08  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Над чем вы голову ломаете? Если файл требует указания utf-8 кодировки (как в вашем первом примере), а вы ее не указываете (во втором примере) - логично, что будет ошибка декодирования.
все понимаю, но последний скрин для кого прикреплен?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.12.2018, 16:08
P.S. Прикрепите файл csv - иначе непонятно какая у него кодировка на самом деле. Если utf-8, то нужно указывать encoding="utf-8". И не выкладывайте сюда картинки ваших кодов - нужен сам код и сам csv файл.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 16:13  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
P.S. Прикрепите файл csv - иначе непонятно какая у него кодировка на самом деле. Если utf-8, то нужно указывать encoding="utf-8". И не выкладывайте сюда картинки ваших кодов - нужен сам код и сам csv файл.
https://yadi.sk/i/Fpc1duKU1FQFdQ - .py; https://yadi.sk/i/W2pxf8pg-auzsw - .csv
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.12.2018, 16:26
Файл csv, который вы выложили кодирован в windows-1251. Логично, что попытка декодировать с указанием кодировки utf-8 вызывает ошибку: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 3: invalid continuation byte.
Python
1
2
3
4
5
6
7
8
9
>>> f=open('product.csv',encoding="utf-8")
>>> f.readlines()
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    f.readlines()
  File "D:\INSTALL\Python3\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 3: invalid continuation byte
>>>
Спрашивается - какой же файл вы читаете в VS Code, что там указание encoding="utf-8" ее не вызывает?
Тут уж вам виднее...
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 19:56  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Файл csv, который вы выложили кодирован в windows-1251. Логично, что попытка декодировать с указанием кодировки utf-8 вызывает ошибку: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 3: invalid continuation byte.
Python
1
2
3
4
5
6
7
8
9
>>> f=open('product.csv',encoding="utf-8")
>>> f.readlines()
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    f.readlines()
  File "D:\INSTALL\Python3\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 3: invalid continuation byte
>>>
Спрашивается - какой же файл вы читаете в VS Code, что там указание encoding="utf-8" ее не вызывает?
Тут уж вам виднее...
Всё также
0
 Аватар для Semen-Semenich
5218 / 3466 / 1172
Регистрация: 21.03.2016
Сообщений: 8,290
10.12.2018, 20:19
uaoasdgvoasgdco, ваш файл ваш код
Python
1
2
Введите название товара Хлеб
>>>
ошибок не выдал но и не отработал, значит что то в логике не так.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 20:27  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
uaoasdgvoasgdco, ваш файл ваш код
Python
1
2
Введите название товара Хлеб
>>>
ошибок не выдал но и не отработал, значит что то в логике не так.
Когда-нибудь я пойму для кого я прикреплял пример работы программы на VS Code
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.12.2018, 20:40
uaoasdgvoasgdco,
Забудьте вы про VS Code. Ваш файл csv в кодировке windows-1251. Поскольку на windows это кодировка по умолчанию - указывать ее в функции open не нужно. А указывать utf-8 - тем более, так как это приводит к ошибке декодирования.
Почему ошибочная кодировка utf-8 не приводит к ошибке в VS Code - непонятно, но к делу это не относится.
Вы изначально неверно указывали кодировку файла.
Сколько раз еще это нужно повторить?
0
 Аватар для Semen-Semenich
5218 / 3466 / 1172
Регистрация: 21.03.2016
Сообщений: 8,290
10.12.2018, 21:08
uaoasdgvoasgdco, работа программы в IDLE Python'a
Python
1
2
3
4
5
6
7
8
n_t = input("Введите название товара ")
 
with open("product.csv") as f:
    data =[list(map(str.strip,x.split(';'))) for x in f.read().split('\n')]
 
for line in sorted(data,key = lambda x: x[3], reverse = True):
    if n_t in line:
        print("Товар - {0[1]}, магазин - {0[2]}, стоимость - {0[3]}".format(line ))
Python
1
2
3
4
5
Введите название товара Сметана
Товар - Сметана, магазин - Виктория, стоимость - 54
Товар - Сметана, магазин - Метро, стоимость - 43
Товар - Сметана, магазин - Спар, стоимость - 37
>>>
Python
1
2
3
Введите название товара Хлеб
Товар - Хлеб, магазин - Виктория, стоимость - 74
Товар - Хлеб, магазин - Лента, стоимость - 59
найдите причину?
0
10.12.2018, 21:09
 Комментарий администратора 
uaoasdgvoasgdco, перенесите все картинки на форум.
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 21:27  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
uaoasdgvoasgdco, работа программы в IDLE Python'a
Python
1
2
3
4
5
6
7
8
n_t = input("Введите название товара ")
 
with open("product.csv") as f:
    data =[list(map(str.strip,x.split(';'))) for x in f.read().split('\n')]
 
for line in sorted(data,key = lambda x: x[3], reverse = True):
    if n_t in line:
        print("Товар - {0[1]}, магазин - {0[2]}, стоимость - {0[3]}".format(line ))
Python
1
2
3
4
5
Введите название товара Сметана
Товар - Сметана, магазин - Виктория, стоимость - 54
Товар - Сметана, магазин - Метро, стоимость - 43
Товар - Сметана, магазин - Спар, стоимость - 37
>>>
Python
1
2
3
Введите название товара Хлеб
Товар - Хлеб, магазин - Виктория, стоимость - 74
Товар - Хлеб, магазин - Лента, стоимость - 59
найдите причину?
http://ipic.su/img/img7/fs/kis... 466316.png ;d
я не знаю, питон может сломаться?

Добавлено через 1 минуту
Цитата Сообщение от Garry Galler Посмотреть сообщение
uaoasdgvoasgdco,
Забудьте вы про VS Code. Ваш файл csv в кодировке windows-1251. Поскольку на windows это кодировка по умолчанию - указывать ее в функции open не нужно. А указывать utf-8 - тем более, так как это приводит к ошибке декодирования.
Почему ошибочная кодировка utf-8 не приводит к ошибке в VS Code - непонятно, но к делу это не относится.
Вы изначально неверно указывали кодировку файла.
Сколько раз еще это нужно повторить?
да боже, я во втором реплае исправил кодировку, всё также
0
 Аватар для Semen-Semenich
5218 / 3466 / 1172
Регистрация: 21.03.2016
Сообщений: 8,290
10.12.2018, 21:28
Цитата Сообщение от uaoasdgvoasgdco Посмотреть сообщение
я не знаю, питон может сломаться?
нет все правильно, в файле нет слова сметана вот вам и пустой результат а вот на Сметана вам выдаст ответ. смотрите ввод из поста выше
0
0 / 0 / 0
Регистрация: 10.12.2018
Сообщений: 9
10.12.2018, 21:30  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
нет все правильно, в файле нет слова сметана вот вам и пустой результат а вот на Сметана вам выдаст ответ. смотрите ввод из поста выше
http://ipic.su/img/img7/fs/kis... 466592.png
0
 Аватар для Semen-Semenich
5218 / 3466 / 1172
Регистрация: 21.03.2016
Сообщений: 8,290
10.12.2018, 21:35
Лучший ответ Сообщение было отмечено uaoasdgvoasgdco как решение

Решение

кстати только обратил внимание что и в вопросе при неработающем коде вы вводили с маленькой буквы

Добавлено через 1 минуту
вы тот же файл csv читаете что и сюда скинули?

Добавлено через 3 минуты
в интерактивном режиме
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Python 3.6.6rc1 (v3.6.6rc1:1015e38be4, Jun 12 2018, 07:51:23) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> n_t = input("Введите название товара ")
Введите название товара Сметана
>>> with open("product.csv") as f:
    data =[list(map(str.strip,x.split(';'))) for x in f.read().split('\n')]
 
    
>>> for line in sorted(data,key = lambda x: x[3], reverse = True):
    if n_t in line:
        print("Товар - {0[1]}, магазин - {0[2]}, стоимость - {0[3]}".format(line ))
 
        
Товар - Сметана, магазин - Виктория, стоимость - 54
Товар - Сметана, магазин - Метро, стоимость - 43
Товар - Сметана, магазин - Спар, стоимость - 37
>>>
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.12.2018, 21:42
Цитата Сообщение от uaoasdgvoasgdco Посмотреть сообщение
да боже, я во втором реплае исправил кодировку, всё также
На какую? И что значит все также? Я проверил: VS Code точно также выдает ошибку на кодировку utf-8 (если ее указать).
Если не указывать - ошибки нет. Просто пустой результат.

Итог:
1) Файл csv должен открываться в кодировке по умолчанию (win-1251).

2) Сам скрипт неверный, так как не стрипает слова от пробелов.
Принт разбивки на слова, который делает ваш скрипт.
Code
1
2
3
4
5
6
7
['1', ' Сметана', ' Виктория', ' 54']
['2', ' Хлеб', ' Лента', ' 59']
['3', ' Йогурт', ' Виктория', ' 64']
['4', ' Колбаса', ' Спар', ' 69']
['5', ' Хлеб', ' Виктория', ' 74']
['6', ' Сметана', ' Спар', ' 37']
['7', ' Сметана', ' Метро', ' 43']
0
 Аватар для Semen-Semenich
5218 / 3466 / 1172
Регистрация: 21.03.2016
Сообщений: 8,290
10.12.2018, 21:44
uaoasdgvoasgdco, все получилось? у меня файл с скриптом рядом лежит а вам надо ваш путь указать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2018, 21:44
Помогаю со студенческими работами здесь

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
здравствуйте питон 2.7 на строку if &quot;с точкой&quot; in comment: ругается UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in...

'charmap' codec can't decode byte 0x98 in position 5679:character maps is undefind
Добрый день. Есть json файл в виде Я делаю попытку прочитать файл и вывести его на экран: import json f =...

SyntaxError: 'charmap' codec can't decode byte 0x98 in position 359: character maps to <undefined>
Здравствуйте. Подскажите, пожалуйста, в чем заключается ошибка и как исправить: Traceback (most recent call last): File...

Utf-8 UnicodeDecodeError
Здравствуйте! Столкнулась с такой проблемой : пишу программу, воспроизводящую звук с помощью библиотеки playsound. Некоторые из файлов...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 1-2: truncated \uXXXX escape
Добрый день! Начал изучать устройство Python по книге Мэт Харрис &quot;Как устроент Python&quot;. Дошел до задачи Посетите сайт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru