Цель: я просто хочу забрать запятую, так как это единственный символ, который испортит мой (конечно необходимый) синтаксический анализ файла для байесовского анализа (т.е. слово, 2,4) вместо слова (например, слово ,, 2,4)Python: замена символьной ошибки на чтение в файле
Итак, в настоящее время я пытаюсь читать по электронной почте в виде текстового файла из публичного корпуса Enron в Интернете и создавать байесовский спам-фильтр.
Я заметил, что чтение в некоторых файлах вызывает ошибки при попытке манипулировать присутствующими строками. Я полностью понимаю, что некоторые из файлов тезисов содержат вирусы, поэтому кодирование некоторых символов может быть недействительным. Тем не менее, я пытаюсь просто заменить запятую внутри строки, и я получаю следующую ошибку:
UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xc1 в позиции 1169: порядковый номер не в диапазоне (128)
Я попробовал все, что этот форум может предложить и я искал везде для решения, такие как:
with open(file+file_path_stings[i],'r') as filehandle:
words = str(filehandle.read())
words = words.replace(',','')
words = words.split()
Я также пробовал много регулярных выражений попыток ... это один из вариантов :
with open(file+file_path_stings[i],'r') as filehandle:
words = str(filehandle.read())
words = re.sub(',','',words)
words = words.split()
Теперь я могу просто просто создать регулярное выражение, которое позволяет только A-Za-z, но я замечаю, что точность спама сильно зависит от того, что многие спам-файлы имеют такие специальные символы.
Любое предложение было бы наиболее ценным. Благодарю.
-Роберт
BTW ив также попытался кодирования и декодирования как в ASCII и utf8 и 16 –
вы можете, пожалуйста, полный трассировки стека? –