在python中的dict中存储外语文本时出现/编码问题

时间:2018-02-16 14:38:17

标签: python encoding decoding

我使用python在外语(韩语)中使用webscraped文本,并将其存储在dict中。

单独的文本打印到终端就好了,但是dict打印如下:

{'title':u'\ uc138 \ ubbf8 \ ub098 \ ud6c4 \ uae30'}

我该如何解决这个问题?

# -*- coding: utf-8 -*-

titleReponse = soupResponse.find('div','title').get_text()
print(titleReponse)
collected = {"title":titleReponse}
print(collected)

1 个答案:

答案 0 :(得分:1)

它只是Python 2下Unicode字符串的内部__repr__表示。正如您已经注意到的那样,打印它显示正确的文本:

>>> dict = {'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'}
>>> dict
{'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'}
>>> dict['title']
u'\uc138\ubbf8\ub098 \ud6c4\uae30'
print dict['title']
세미나 후기

你不应该担心内部代表在所有。是的,对于没有控制代码的纯ASCII字符串,它等于打印的内容。但是有这样的事情是完全正常的:

>>> str = '123\n456'
>>> str
'123\n456'
>>> print str
123
456

同样,内部字符串的表示与使用print输出的内容不同。

如果要使用Unicode字符串进行大量工作,最好是升级到Python 3.它对Unicode的支持非常出色。另一个令人高兴的副作用是,在这种情况下,Unicode字符串会更好地显示(不是“正确”,而是“更好” - 存在差异):

>>> dict = {'title': u'\uc138\ubbf8\ub098 \ud6c4\uae30'}
>>> dict
{'title': '세미나 후기'}