Python: как анализировать символы, отличные от ASCII, в строке

В своем сценарии Python я пытаюсь прочитать текстовый файл, содержащий столбцы с именами и фамилиями людей, некоторые из которых содержат символы, отличные от ASCII, например ñ. Но когда я это делаю, я получаю ошибку UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 66.

Из того, что я читал в Интернете, я знаю, что вы можете решить эту проблему, игнорируя или отбрасывая символы, отличные от ASCII, но я не хочу этого делать. Есть ли простой способ преобразования всех символов, отличных от ASCII, в файле в обычную строку?

В настоящее время я открываю свой файл с помощью infile = open(filename, 'rU').

Не повторяющийся вопрос: я спрашиваю о том, как читать файл с символами Юникода, а не о том, как записать строку Юникода в файл.


person claudiadast    schedule 29.05.2019    source источник
comment
Возможный дубликат Python: напишите список с символами, отличными от ASCII, в текстовый файл   -  person Endyd    schedule 29.05.2019
comment
Файл был написан на MacOS   -  person claudiadast    schedule 29.05.2019
comment
открыть (имя файла, 'r', кодировка = 'utf8')   -  person Ahmad Yoosofan    schedule 30.05.2019


Ответы (1)


  1. Сделайте копию файла.
  2. Убедитесь, что ваш файл в юникоде и узнайте, какой формат юникода он использует. некоторые простые редакторы, такие как geany, помогут вам найти правильную кодировку, которая использовалась при создании файла. Разделите файл, если он большой, и обработайте его часть редакторами.
  3. Используйте правильную кодировку (возможно, это старая кодировка cp) для открытия файла и выполните преобразование файла в utf8. Или используйте инструмент (например, редактор), чтобы преобразовать его в utf8.
person Ahmad Yoosofan    schedule 30.05.2019