You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3中复刻Python 2风格的Unicode字符串len()函数?

复刻Python 2风格的Unicode字符串len()函数(Python 3实现)

没问题,这事儿其实很好解决——Python 2里对Unicode字符串的len()本质是把字符串按系统默认编码(绝大多数场景下是UTF-8)转成字节序列后,计算字节的数量,我们在Python 3里直接复刻这个逻辑就行。

核心实现代码

def py2_len(s):
    # 默认采用UTF-8编码,对应Python 2中绝大多数场景的默认行为
    return len(s.encode('utf-8'))

测试验证

运行下面的代码就能看到和Python 2一致的结果:

print(py2_len("애정"))  # 输出6,和Python 2中len(u"애정")的结果完全匹配

为什么不用sys.getsizeof()?

你说得完全对,sys.getsizeof()根本不是正确的解决方案——它返回的是Python字符串对象在内存中的总占用大小,包含了对象的元数据(比如引用计数、类型信息等额外开销),和字符串写入磁盘时的字节数没有关系,所以肯定不能用它来实现需求。

拓展:适配非UTF-8编码场景

如果你的Python 2环境默认编码不是UTF-8(比如部分中文系统默认用GBK),只需要修改encode()方法的参数为对应的编码即可,比如:

def py2_len_gbk(s):
    return len(s.encode('gbk'))

内容的提问来源于stack exchange,提问作者Ian McKenzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:10:16