请教python2.5中unicode字符串的长度与下标问题

时间:2022-02-16 20:18:31
>>> s = u"1你2是"
>>> len(s)
6
我想按字符个数统计,怎样才能得到4?

>>> print(s[1])
Ä
我想按字符个数来索引,怎样才能得到'你'?

没有分了,呵呵~~~~~~~

8 个解决方案

#1


补充:源文件是UTF-8编码的,运行环境是WindowsXP+Python2.5

#2


如果没有什么好办法的话,只有用Python3000了。

#3


引用 2 楼 osnc_17 的回复:
如果没有什么好办法的话,只有用Python3000了。


如果没有特别的理由必须用2.X(比如需要使用第三方库),推荐你直接使用Python 3。

#4


你啥版本啊,我2.7的len没问题,你写'u'了嘛?

#5


总算发现原因了, 我是在IDLE里交互运行的, 写成文件再运行就没事了.

#6


2.7都没有上面的问题的

#7


引用 5 楼 osnc_17 的回复:
总算发现原因了, 我是在IDLE里交互运行的, 写成文件再运行就没事了.


嗯,一般编码问题都不要idle里面交互运行,idle打印信息本来就还要考虑idle需要的编码。

#8


>>> a = u"1你2是"
>>> b = a.encode("utf-8")
>>> c = unicode(b, "utf-8")
>>> print a,len(a)
1Äã2ÊÇ 6
>>> print b,len(b)
1脛茫2脢脟 10
>>> print c,len(c)
1Äã2ÊÇ 6
>>> 

#1


补充:源文件是UTF-8编码的,运行环境是WindowsXP+Python2.5

#2


如果没有什么好办法的话,只有用Python3000了。

#3


引用 2 楼 osnc_17 的回复:
如果没有什么好办法的话,只有用Python3000了。


如果没有特别的理由必须用2.X(比如需要使用第三方库),推荐你直接使用Python 3。

#4


你啥版本啊,我2.7的len没问题,你写'u'了嘛?

#5


总算发现原因了, 我是在IDLE里交互运行的, 写成文件再运行就没事了.

#6


2.7都没有上面的问题的

#7


引用 5 楼 osnc_17 的回复:
总算发现原因了, 我是在IDLE里交互运行的, 写成文件再运行就没事了.


嗯,一般编码问题都不要idle里面交互运行,idle打印信息本来就还要考虑idle需要的编码。

#8


>>> a = u"1你2是"
>>> b = a.encode("utf-8")
>>> c = unicode(b, "utf-8")
>>> print a,len(a)
1Äã2ÊÇ 6
>>> print b,len(b)
1脛茫2脢脟 10
>>> print c,len(c)
1Äã2ÊÇ 6
>>>