如何在Python中输出中文字符?

时间:2016-10-01 09:42:29

标签: python unicode jupyter-notebook

我的数据集中的['douban_info']列是关于存储在JSON中的中文电影的信息,因此当我执行df['douban_info'][0]时,它会返回:

enter image description here

中文字符全部改为\u7834\u6653\u8005,我无法轻易阅读。是否有可能让Python在输出时将它们变成原始的中文?

我在Jupyter Notebook中使用Python 2.7。

2 个答案:

答案 0 :(得分:2)

这就是Python 2的工作原理。在为列表和字符串生成显示字符串时,它默认显示repr()。您必须print个字符串才能看到Unicode字符:

>>> D = {u'aka': [u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)', u'\u9ece\u660e\u65f6\u5206']}
>>> D[u'aka'][0]
u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)'
>>> print D[u'aka'][0]
2019猎血都市(港)

如果您不能转到Python 3,如果您不喜欢默认的repr()显示,则必须自己制作显示例程。类似的东西:

D = {u'aka':[u'2019\u730e\u8840\u90fd\u5e02(\u6e2f)',u'\u9ece\u660e\u65f6\u5206']}

def dump(item):
    L = []
    if isinstance(item,dict):
        for k,v in item.items():
            L.append(dump(k) + ':')
            L.append(dump(v))
        return '{' + ', '.join(L) + '}'
    elif isinstance(item,list):
        for i in item:
            L.append(dump(i))
        return '[' + ', '.join(L) + ']'
    else:
        return "u'" + item + "'"

print dump(D)

输出:

{u'aka':, [u'2019猎血都市(港)', u'黎明时分']}

请注意,这绝不是完整的通用转储实用程序。

在Python 3 repr()已更新:

>>> print(D)
{'aka': ['2019猎血都市(港)', '黎明时分']}

答案 1 :(得分:-1)

使用json.dump选项拨打json.dumpsensure_ascii=False,然后您将获得原始的utf-8编码字符串。

https://docs.python.org/2/library/json.html

引用

json.dump(obj, fp, skipkeys=False, **ensure_ascii=True**, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

你可以尝试

df['douban_info'][0].to_json(ensure_ascii=False)

获取以中文字符显示的属性值。