4

なぜですか

>>> len('™')
>>> 3

python 2.xで?

1文字と見なされるようにすばやく修正するにはどうすればよいですか(Python 3.xのように?)

4

1 に答える 1

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 2strタイプの名前が変更されていbyteます(入力は基本的b'™'にPython 3と同じです)。

PythonとUnicodeについて読みたいと思うかもしれません:

于 2013-03-08T16:48:26.280 に答える