无法在vim中正常打印中文字符

时间:2018-05-29 07:48:34

标签: python pandas dataframe

有一个数据框

userid     movie
  1        hh泰坦尼克号
  2        Hungary Game 饥饿游戏

电影名称包含中文

userID的类型为int64movie的类型为str

我使用方法pd.Series(df.movie.values,index=df.userid).to_dict()dataframe转换为dict。然后我打印dict,中文字符显示如下\xe8\x8b\xb1\xe9\x80\x9f\xe4\xba\x9a\xe4\xb8\xa4\xe5\x8e\xa2\xe6\xac\xa7\xe5\xae\x9d。我在文件中使用utf-8,并且dataframe中正常显示中文字符。 帮助请

2 个答案:

答案 0 :(得分:0)

您可以导入JSON模块,然后:

print json.dumps(a, ensure_ascii = False, encoding = "UTF-8")

答案 1 :(得分:0)

实际上,此问题与jsonpandasdataframevim或其他任何内容之间没有任何关系。

显示未使用ascii编码的字符只是一个问题。

只有在使用Python2而不是Python3时才会发生。

您可以在Python2中确认:

a = {1: "泰坦尼克号"}
print a
# {1: '\xe6\xb3\xb0\xe5\x9d\xa6\xe5\xb0\xbc\xe5\x85\x8b\xe5\x8f\xb7'}

但您仍然可以通过以下方式正常打印:

print a[1]
# 泰坦尼克号

问题是dict如何在Python2中处理__str____repr__

使用json的解决方案是使用dict编码将整个str转换为utf-8,这样就可以了。

BTW,最佳解决方案是使用Python3。