我一直在为我的学生准备一个简单的Python脚本示例,我发现很难解决以下问题。
我正在使用utf8
编码,因为我希望他们使用波兰语字符,例如
Ł,±,ś。现在,该脚本应该从用户获取名称并打印它
在由*制成的矩形中。所以这就是我想要向他们展示的内容:
imie=raw_input('Podaj swoje imię: ') #Give your name
dl=len(imie)
print '*'*(dl + 4)
print '*' + ' '*(dl + 2) + '*'
print '* ' + imie + ' *'
print '*' + ' '*(dl + 2) + '*'
print '*'*(dl + 4)
问题是,对于诸如Antoś Mąka
之类的名称,dl
变量值应为11,但它是13,因为ś和±符号计算为2。
是否可以强制len()
函数将其计算为1?
答案 0 :(得分:1)
在Python 2. *中使用decode
:
dl=len(imie.decode("utf-8"))
答案 1 :(得分:1)
将utf8中的数据解码为unicode对象。然后获取unicode的len。
imie=raw_input('Podaj swoje imię: ').decode('utf8') #Give your name
dl=len(imie)
print dl
答案 2 :(得分:0)
当您使用str
unicode
imie = unicode(raw_input('....').decode('utf-8'))