所以我有這樣的事情:的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