【问题标题】:Python, len and slices on unicode stringsunicode 字符串上的 Python、len 和 slice
【发布时间】:2011-08-07 10:22:29
【问题描述】:

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

我已经正确设置了编码标头,并且我愿意使用 slices 或 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

【问题讨论】:

    标签: python string unicode


    【解决方案1】:

    你没有在那里创建 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
    

    【讨论】:

    • 好的,我明白了,谢谢,将包含这些符号的现有字符串集转换为 unicode 的理想方法是什么?
    • 对字节串使用.decode(...)方法;参数是要使用的编解码器。例如,如果一个字节字符串s 是UTF-8 编码的,那么s.decode('utf-8') 就是对应的Unicode 字符串。
    猜你喜欢
    • 2014-09-10
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    相关资源
    最近更新 更多