如何在Python中转换带有特殊字符的字符串变量以正确打印

时间:2019-06-17 10:07:59

标签: python beautifulsoup escaping special-characters encode

抱歉,标题令人困惑,但是我已经对这个问题进行了两个小时的研究,却不知道该如何问这个问题,所以任何人都可以随意编辑此帖子。

我有一个使用Web抓取创建的字符串变量,它使用特殊字符,并且在打印时看起来像没有引号的“ \ ud83d \ ude00 \ u0107 \ u00e7 \ n hello”。问题是我希望它打印实际的特殊字符,但是我不确定应该使用哪种编码方法。如果我复制并粘贴确切的字符串并打印出来,它可以正常工作,但是作为我创建的变量,它不会显示特殊字符,而仅显示文本。

我已经尝试过使用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 个答案:

答案 0 :(得分:2)

a = "\ud83d\ude00\u0107\u00e7 \n hello"

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

输出:

'?ćç \n hello'

答案 1 :(得分:1)

经过一个小时的反复试验,我发现这是答案:

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