unicode字符串上的Python,len和切片

时间:2011-04-17 19:01:04

标签: python string unicode

我正在处理一种情况,我需要在屏幕中的分配间隙中使字符串适合,因为我使用unicode len()和slices []显然在字节上工作,我最终切割unicode字符串太短,因为只占用屏幕中的一个空格,但是len()或切片[]占用2个。

我正确设置了编码头,并且我愿意使用除slice或len()之外的其他东西来处理这个问题,但我真的需要知道字符串需要多少空格以及如何剪切它可用。

$cat test.py
# -*- coding: utf-8 -*-
a = "2 €uros"
b = "2 Euros"
print len(b)
print len(a)
print a[3:]
print b[3:]

$python test.py
7
9
��uros
uros

1 个答案:

答案 0 :(得分:16)

你不是在那里创建Unicode字符串;你正在用UTF-8编码创建字节串(正如你所看到的那样,它是可变长度的)。您需要使用u"..."(或u'...')形式的常量。如果你这样做,你会得到预期的结果:

% cat test.py
# -*- coding: utf-8 -*-
a = u"2 €uros"
b = u"2 Euros"
print len(b)
print len(a)
print a[3:]
print b[3:]
% python test.py 
7
7
uros
uros