求助,关于python的list 中文乱码

2012-11-25 16:57:39 +08:00
 andy12530
在sublime text2的调试里面

#coding=utf-8

print "中国"
# 这里输出为:中国

L = ["中国", 'a', 'b'];
print L;
#这里输出为:['\xe4\xb8\xad\xe5\x9b\xbd', 'a', 'b']

最简单的办法,搞定list里面的中文,让它正常输出。

PS:
每次弄编码都很头疼,大家全用UTF8不就完嘛。搞这么复杂
18574 次点击
所在节点    Python
15 条回复
skydiver
2012-11-25 16:59:27 +08:00
这个就是utf8编码吧,只不过是按照16进制显示的
andy12530
2012-11-25 17:00:39 +08:00
@skydiver 为虾米它会把中文搞成16进制的呢,有木有最简单的方法,把它转为正常的。
cabbala
2012-11-25 18:02:59 +08:00
@andy12530 列表不是让你整个print。。请用for i in list: print i
timonwong
2012-11-25 18:12:53 +08:00
@andy12530
对于非string类型, print 输出的是用 __repr__() 表达后的。

因此你不能直接用它,需要自己写一个打印该list
yuelang85
2012-11-25 18:23:52 +08:00
L = [unicode("中国", 'utf-8'), 'a', 'b'];
ehaagwlke
2012-11-25 23:55:31 +08:00
@cabbala 是不是for i in list: print str(i) 就可以了?
timonwong
2012-11-26 00:28:55 +08:00
@ehaagwlke
在string list的情况下,直接print元素就可以了,要一次打印完,用join可能更好点:

print ', '.join(L)
cabbala
2012-11-26 10:44:48 +08:00
@ehaagwlke print i就行了,没必要str(i),i已经是string了
cabbala
2012-11-26 10:45:21 +08:00
@timonwong
@ehaagwlke join好用+1
Niris
2012-11-26 13:24:24 +08:00
你需要的是 python3。
andy12530
2012-11-26 13:45:05 +08:00
python3 可以解决这个问题。

@cabbala 一语中的。的确在程序中是不需要打印这个东西的。
@timonwong 研究的很深入,学习了。
Kai
2012-11-26 13:47:31 +08:00
moved to /go/python :)
binux
2012-11-26 13:53:15 +08:00
ergatea
2012-11-26 13:55:01 +08:00
L = [u"中国", 'a', 'b'];
qiuhanyuan
2015-12-23 15:24:27 +08:00
如果是在 json 中的怎么办呢?虽然将这个 unicode 值取出来打印是中文,但是打印 json 字符串或者字典还是 /uxxxx 编码。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/53285

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX