为什么
>>> len('™')
>>> 3
在python 2.x?
如何快速修复它以被视为一个字符(如Python 3.x?)
答案 0 :(得分:6)
您的终端编码设置为UTF8。您正在计算编码字符中的字节:
>>> '™'
'\xe2\x84\xa2'
>>> len('™')
3
使用unicode计算字符数而不是字节数:
>>> u'™'
u'\u2122'
>>> len(u'™')
1
来自终端编码的或解码:
>>> import sys
>>> '™'.decode(sys.stdin.encoding)
u'\u2122'
在Python 3中,字符串是unicode
值,Python 2 str
类型重命名为byte
(您的输入与Python 3中的b'™'
基本相同)
您可能想要阅读Python和Unicode: