所以我有这样的事情:的Python:什么是字符串相当于[A:B],但对Unicode
x = "CЕМЬ"
x[:len(x)-1]
即从字符串中删除的最后一个字符。 但它不起作用,它给了我一个错误。我想这是因为它是Unicode。那么你如何在非ansi字符串上做这种简单的格式。
所以我有这样的事情:的Python:什么是字符串相当于[A:B],但对Unicode
x = "CЕМЬ"
x[:len(x)-1]
即从字符串中删除的最后一个字符。 但它不起作用,它给了我一个错误。我想这是因为它是Unicode。那么你如何在非ansi字符串上做这种简单的格式。
x = u'some string'
x2 = x[:-1]
这是因为在Python 2.x的"CЕМЬ"
,是写字节串b'C\xd0\x95\xd0\x9c\xd0\xac'
的一种奇怪的方式。
你想要一个字符字符串。在Python 2.x中,字符串的前缀是一个u
:
x = u"CЕМЬ"
x[:-1] # Returns u"CЕМ" (len(x) is implicit for negative values)
如果你在程序中写这篇(而不是一个交互式shell),你会想specify a source code encoding。要做到这一点,只需将下面的行添加到文件的开头,其中utf-8
符合您file encoding:
# -*- coding: utf-8 -*-
或使用'\ uxxxx' unicode转义文字来表示任何不是ASCII字符的东西(python 2)。在py3k中,默认的源代码编码是UTF-8。 – 2012-08-12 12:19:55
谢谢!它现在工作:) – 2012-08-12 12:23:35
保存文件utf-8
编码:
# -*- coding: utf-8 -*-
x = u'CЕМЬ'
print x[:-1] #prints CЕМ
为什么是unicode这里的问题吗?这看起来不像一个unicode字符串。除此之外:字符串是不可变的。 – 2012-08-12 12:01:17
@Maulwurfn:因为它是python 2中的一个字节字符串,而不是一个unicode字符串,因此OP正在分割字节,而不是字符。 – 2012-08-12 12:04:10