Библиотека geograpy3 для извлечения мест в тексте, дает UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x8d в позиции 276 - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь извлечь местоположение из текста, используя библиотеку geography3 в Python.

import geograpy
address = 'Jersey City New Jersey 07306'
places = geograpy.get_place_context(text = address)

На что я получаю ошибку ниже UnicodeDecodeError:

 ~\Anaconda\lib\site-packages\geograpy\places.py in populate_db(self)
 28         with open(cur_dir + "/data/GeoLite2-City-Locations.csv") as info:
 29             reader = csv.reader(info)
---> 30             for row in reader:
 31                 print(row)
 32                 cur.execute("INSERT INTO cities VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?);", row)

~\Anaconda\lib\encodings\cp1252.py in decode(self, input, final)
 21 class IncrementalDecoder(codecs.IncrementalDecoder):
 22     def decode(self, input, final=False):
---> 23         return 
 codecs.charmap_decode(input,self.errors,decoding_table)[0]
 24 
 25 class StreamWriter(Codec,codecs.StreamWriter):

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 276: character maps to <undefined>

После некоторого исследования я попытался изменить файл place.py и добавил в строку кодировку = "utf-8" -----> 30

with open(cur_dir + "/data/GeoLite2-City-Locations.csv", encoding="utf-8") as info:

Но это все равно дает мне ту же ошибку. Я также попытался сохранить GeoLite2-City-Locations.csv на рабочем столе, а затем попытался прочитать его, используя тот же код.

with open("GeoLite2-City-Locations.csv", encoding="utf-8") as info:
      reader = csv.reader(info)
      for row in reader:
          print(row)

, который работает абсолютно нормально и печатает все строки GeoLite2-City-Locations.csv. Я не понимаю проблемы!

1 Ответ

0 голосов
/ 24 января 2019

вы должны указать кодировку encoding='utf-8', как вы это сделали, хотя в методе correct_country_mispelling(self, s) в файле place.py (49 строка)

...