Форум сайта python.su
Добрый вечер! Подскажите, пожалуйста, как решить проблему: есть функция, считывающая текст из файла. При считывании вылазит ошибка:
return f.read() File "/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
def load_data(filepath): if not os.path.exists(filepath): return None with open(filepath, 'r') as f: return f.read()
Прикреплённый файлы: article.txt (79,2 KБ)
Офлайн
Решить эту проблему у меня получилось так.
1. Выделяем мышкой нужный фрагмент из “Войны и мира” на веб-странице (в данном случае это http://az.lib.ru/t/tolstoj_lew_nikolaewich/text_0040.shtml
2. Сохраняем выделенный фрагмент в файл на диске. Я сохранил с кодировкой utf-8, хотя браузер показывает, что на веб-странице используется Windows-Cyrillic (cp1251).
3. Открываем этот файл в Python:
>>> with open("article1.txt", "r", encoding = "utf-8") as f: ... f.read() ...
>>> with open("article1.txt", "r", encoding = "utf-8") as f: for line in f: print(line)
Отредактировано old_monty (Янв. 1, 2017 22:17:22)
Офлайн
vic57в python 3 это не даст результата, необходимо сделать такprint(line),
print(line, end=" ") # Добавляет пробел вместо перевода строки
Офлайн
vic57А это еще зачем? В консоли будет опять же с пустыми строками, но еще хуже:
а так?
print(line),
(None,)
– Dieu, quelle virulente sortie – отвечал, нисколько не
(None,)
смутясь такою встречей, вошедший князь, в придворном, шитом мундире, в
(None,)
чулках, башмаках, при звездах, с светлым выражением плоского лица.
Офлайн
RomissevdО, вот так отлично! Я забыл про end = “ ”, хотя сам довольно часто его применяю.
в python 3 это не даст результата, необходимо сделать так
print(line, end=“ ”) # Добавляет пробел вместо перевода строки
Так говорила в июле 1805 года известная Анна Павловна Шерер, фрейлина и
приближенная императрицы Марии Феодоровны, встречая важного и чиновного
князя Василия, первого приехавшего на ее вечер. Анна Павловна кашляла
несколько дней, у нее был грипп, как она говорила (грипп был тогда новое
слово, употреблявшееся только редкими). В записочках, разосланных утром с
красным лакеем, было написано без различия во всех:
“Si vous n'avez rien de mieux à faire, M. le comte (или mon prince), et
si la perspective de passer la soirée chez une pauvre malade ne vous effraye
pas trop, je serai charmée de vous voir chez moi entre 7 et 10 heures.
Annette Scherer”.
– Dieu, quelle virulente sortie – отвечал, нисколько не
смутясь такою встречей, вошедший князь, в придворном, шитом мундире, в
чулках, башмаках, при звездах, с светлым выражением плоского лица. Он
говорил на том изысканном французском языке, на котором не только говорили,
но и думали наши деды, и с теми тихими, покровительственными интонациями,
Офлайн