Я пытаюсь проанализировать серию паролей для частоты. Мой скрипт работает с другими носителями ввода, однако кажется, что в моем текущем наборе данных есть некоторые плохие символы. Как я могу обойти «плохие» данные?Ошибка обработки строки: UnicodeDecodeError: кодек 'utf8' не может декодировать
import re
import collections
words = re.findall('\w+', open('rockyou.txt').read().lower())
a=collections.Counter(words).most_common(50)
for word in a:
print(word)
Затем я получаю ошибку:
Traceback (most recent call last):
File "shakecount.py", line 3, in <module>
words = re.findall('\w+', open('rockyou.txt').read().lower().ASCII)
File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 5079963: invalid continuation byte
Есть идеи?
Вышеприведенное было полезно, но в конечном итоге не решило проблему, я столкнулся с более греческими ошибками (я новичок в программировании). Я закончил тем, что открыл список слов в текстовом редакторе и перепечатал его в формате utf-8, который затем работал. Благодаря agf за вашу помощь! – AlphaTested
@AlphaTested Если вы не знаете кодировку, другой способ - использовать [chardet] (http://pypi.python.org/pypi/chardet), чтобы обнаружить это. – agf
А, я вижу. Благодарю. – AlphaTested