/ / Використовуйте Python для пошуку та заміни символу терну (þ) на Pipe (|) - python

Використовуйте Python для пошуку та заміни колючого (þ) символу з трубою (|) - python

Я намагаюся використовувати python для пошуку символу шипу "þ" та заміни на "". Наприклад, файл містить вміст на зразок 125650þ383736þ392647. Нижче мій код:

f = codecs.open(path, encoding="utf-8", mode="r+")
contents = f.read()
if u"u00FE" in contents:
print "Found thorn"

Я отримав помилку в рядку content = f.read (): UnicodeDecodeError: "utf8" кодек не може "декодувати байт 0xfe в позиції 7: недійсний початковий байт

Здається, що файловий об'єкт f не може "декодувати терновий символ". У чому тут проблема? Спасибі заздалегідь

Відповіді:

3 для відповіді № 1

Найчастіша причина помилок декодування - цеви використовуєте неправильне кодування. У цьому випадку схоже, що ваш файл закодований у Windows-1252 або latin-1, а не utf-8. Я майже впевнений, що це так 0xfe є кодовою точкою для латинської шипи з малої літери для цих кодеків.

Наприклад:

>>> print "125650xfe383736xfe3926".decode("latin-1")
125650þ383736þ3926

0 для відповіді № 2

Ваш файл не містить дійсних кодувань UTF8, а також ваш u"u00FE" правильне кодування UTF8 þ:

>>> u"þ".encode("utf8")
"xc3xbe"

Схоже, кодування, яке ви очікуєте, є латинським-1:

>>> u"þ".encode("latin-1")
"xfe"

Отже, ви хочете:

f = codecs.open(path, encoding="latin-1", mode="r+")
contents = f.read()
if u"þ" in contents:
print "Found thorn"