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

Ark*_*nez 9 python string unicode

我正在处理一种情况,我需要在屏幕中的分配间隙中设置一个字符串,因为我正在使用unicode len()和slices []显然在字节上工作,我最终将unicode字符串剪得太短,因为只有占用屏幕中的一个空格,但是len()或slice []占用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
Run Code Online (Sandbox Code Playgroud)

Nic*_*ley 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
Run Code Online (Sandbox Code Playgroud)

  • 在字节串上使用`.decode(...)`方法; 参数是要使用的编解码器.例如,如果字节字符串`s`是UTF-8编码的,则s.decode('utf-8')`是相应的Unicode字符串. (3认同)