用python将中文字符分成一个个字

>>> a='魏茨曼和'
>>> [i for i in a]
['\xe9', '\xad', '\x8f', '\xe8', '\x8c', '\xa8', '\xe6', '\x9b', '\xbc', '\xe5', '\x92', '\x8c']
>>> a='魏和和'
>>> [i for i in a]
['\xe9', '\xad', '\x8f', '\xe5', '\x92', '\x8c', '\xe5', '\x92', '\x8c']
>>> a[0]
'\xe9'
阅读 17.5k
3 个回答

python3默认是unicode,所以python3可以直接循环,但是python2不可以

代码

text='魏和河'
text = unicode(text, 'utf-8')
for i in text:
    print i

同样的代码,在python3下运行就没有任何问题。python3强制unicode编码,就可以拆分成一个个汉字

python 2的字符串有隐式的str到byte的转换,而如下所示默认的是(3个byte代表一个中文字的utf8),所以你遍历出来是这个结果。
你可以这么写:

# encoding=utf-8
a = u'魏和河'
for i in a:
    print i
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题