Кодировка Python '\ xdf' / '\ xc3 \ x9f' в 'ß' - PullRequest
0 голосов
/ 11 июня 2018

Я загружаю html одного сайта и делаю его с красивым супом вот так:

f_page_soup = Soup(f_driver.page_source, "lxml")
with open(f_filename_pretty, 'wb') as f_output:
    f_output.write(f_page_soup.prettify(encoding='utf-8'))

и открываю html с таким названием:

ecjData = open(filename, 'r', encoding='utf-8').read()
    pageSoup = Soup(ecjData, "lxml")

Внутри htmlразные ссылки, которые я хочу собрать с BeautifulSoup.Один из них выглядит следующим образом example.com/weiß/3

После перебора всех ссылок я хочу их распечатать.Делая это:

print ("https://example.com" + a["href"])

дает мне UnicodeEncodeError для указанной выше ссылки, как и ожидалось.

Так что после обнаружения ошибки я пытаюсь ее декодировать:

print (("https://example.com" + a["href"]).encode('utf-8').decode('latin-1'))

что приводит к

'ascii' codec can't encode characters in position 78-79: ordinal not in range(128)

Другой подход, который я пробовал, заключался в замене внутри строки:

print (str(("https://example.com" + a["href"]).encode('utf-8')).replace('\\xc3\\x9f','ß'))

, что затем снова приводит к:

'ascii' codec can't encode character '\xdf' in position 80: ordinal not in range(128)

В основномчто мне нужно напечатать:

"https://example.com/weiß/3"

Как мне этого добиться?Я использую Python 3.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...