我正在处理一种情况,我需要在屏幕中的分配间隙中使字符串适合,因为我使用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
答案 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