如何在Python中输出汉字?
How to output chinese characters in Python?
我的数据集中的列['douban_info']
是存储在JSON中的关于中文电影的信息,所以当我做df['douban_info'][0]
时,它returns:
汉字都改成了\u7834\u6653\u8005
之类的东西,看不懂。能不能让Python在输出的时候把它们变成中文原文?
我在 Jupyter Notebook 中使用 Python 2.7。
使用 ensure_ascii=False
选项调用 json.dump
或 json.dumps
,然后您将获得原始的 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)
获取以中文字符显示的属性值。
这就是 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猎血都市(港)', '黎明时分']}
我的数据集中的列['douban_info']
是存储在JSON中的关于中文电影的信息,所以当我做df['douban_info'][0]
时,它returns:
汉字都改成了\u7834\u6653\u8005
之类的东西,看不懂。能不能让Python在输出的时候把它们变成中文原文?
我在 Jupyter Notebook 中使用 Python 2.7。
使用 ensure_ascii=False
选项调用 json.dump
或 json.dumps
,然后您将获得原始的 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)
获取以中文字符显示的属性值。
这就是 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猎血都市(港)', '黎明时分']}