Проблема в том, что у вас есть кодированный в ISO-8859-1 текст, и вы читаете его как Unicode.
Если вы точно знаете кодировку, вы можете декодировать ее напрямую:
import codecs
lines = [
'Cañon City|Colorado|Canon City, CO',
'Kapaâ\x80\x98a|Hawaii|Kapaa, HI',
'Waiâ\x80\x98anae|Hawaii|Urban Honolulu, HI',
'â\x80\x98ewa Beach|Hawaii|Urban Honolulu, HI',
'â\x80\x98ewa Beach|Hawaii|Urban Honolulu, HI',
'â\x80\x98aiea|Hawaii|Urban Honolulu, HI',
'La Cañada Flintridge|California|Los Angeles-Long Beach-Anaheim, CA',
'La Cañada Flintridge|California|Los Angeles-Long Beach-Anaheim, CA',
'Española|New Mexico|Espanola, NM',
'Española|New Mexico|Espanola, NM'
]
utf8_lines = [
codecs.decode(bytes(line,'ISO-8859-1'), 'UTF-8')
for line in lines
]
utf8_lines
[
'Cañon City|Colorado|Canon City, CO',
'Kapa‘a|Hawaii|Kapaa, HI',
'Wai‘anae|Hawaii|Urban Honolulu, HI',
'‘ewa Beach|Hawaii|Urban Honolulu, HI',
'‘ewa Beach|Hawaii|Urban Honolulu, HI',
'‘aiea|Hawaii|Urban Honolulu, HI',
'La Cañada Flintridge|California|Los Angeles-Long Beach-Anaheim, CA',
'La Cañada Flintridge|California|Los Angeles-Long Beach-Anaheim, CA',
'Española|New Mexico|Espanola, NM',
'Española|New Mexico|Espanola, NM'
]
Если у вас есть неизвестные кодировки или даже дублированные кодировки в одном файле, то библиотека ftfy
автоматически обнаружит и устранит все проблемы с кодировкой. При использовании внутри большого конвейера данных он может быть немного загружен (запускайте его только на тех сегментах текста, которые не являются символами ascii), но ваши проблемы с кодировкой будут решены.
[
ftfy.fix_encoding(line)
for line in lines
]
[
ftfy.fix_text(line)
for line in lines
]