Как я могу «перевести» все коды Юникода в строке в фактические символы, используя Python 3? - PullRequest
0 голосов
/ 29 мая 2020

Я анализирую веб-контент, чтобы изолировать тело новостных статей от определенного сайта, для чего я использую urllib.request, чтобы получить исходный код веб-страницы статьи и изолировать основной текст. Однако urllib принимает такие символы, как «ç», и помещает их в строку python в качестве нотации utf-8, «c387». То же самое происходит с символами «» и «∎», которые печатаются как «e», за которым следует набор чисел. Это очень раздражает при попытке прочитать статью и, следовательно, требует решения. Я мог бы oop просмотреть статью и заменить каждый узнаваемый код utf-8 на фактический символ, используя утомительную функцию, но мне было интересно, есть ли способ сделать это более легко.

Например, , текущий результат моей программы может быть: e2809eThis country doesn't...e2809d

Я бы хотел, чтобы это было: „This country doesn't...”

Примечание. Я уже проверил исходный код веб-страница, которая использует только эти «специальные» символы, так что это определенно проблема urllib.

Заранее спасибо!

1 Ответ

1 голос
/ 29 мая 2020

urllib возвращает байты:

>import urllib
>url = 'https://stackoverflow.com/questions/62085906'
>data = urllib.request.urlopen(url).read()
>type(data)
bytes
>idx = data.index(b'characters like')
>data[idx:idx+20]
b'characters like "\xc3\xa7"'

Теперь давайте попробуем интерпретировать это как utf-8:

>data[idx:idx+20].decode('utf-8')
'characters like "ç"'

Et voilà!

...