Как преобразовать строковую переменную со специальными символами в Python для правильной печати - PullRequest
1 голос
/ 17 июня 2019

Извините, если заголовок сбивает с толку, но я буквально исследовал это в течение двух часов и не знаю, как мне задать этот вопрос, чтобы кто-нибудь не стеснялся редактировать этот пост.

У меня есть эта строковая переменнаякоторый я создал, используя веб-очистку, и он использует специальные символы и выглядит как "\ ud83d \ ude00 \ u0107 \ u00e7 \ n привет" без кавычек, когда я его печатаю.Проблема в том, что я хочу, чтобы он печатал действительные специальные символы, но я не уверен, какой метод кодирования мне следует использовать.Если я копирую и вставляю точную строку и печатаю ее, она работает нормально, но в качестве созданной мной переменной она не отображает специальные символы, а только текст.

Я попытался преобразовать ее в строку,используя json.load, unicode-escape, UTF-8 и кучу других, но я, честно говоря, не уверен, какой метод мне следует использовать

page = requests.get('https://www.example.com')
soup = str(BeautifulSoup(page.text, 'html.parser')).splitlines()

for line in soup:
    if 'hello' in line:
        print(line) #produces literal text of \ud83d\ude00\u0107\u00e7 \n hello

print('\ud83d\ude00\u0107\u00e7 \n hello') #produces wanted result

Я бы хотел, чтобы результат выглядел так:

?ćç

привет

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Пусть a = "\ud83d\ude00\u0107\u00e7 \n hello"

 a.encode('utf-16', 'surrogatepass').decode('utf-16')    

Выход:

'?ćç \n hello'
1 голос
/ 17 июня 2019

Через час проб и ошибок я понял, что это был ответ:

line.encode('utf-8').decode('unicode-escape')

...