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

Python列表字符数统计结果错误,寻求问题原因排查

问题原因分析

你遇到的问题核心在于字节串(bytes)和字符串(str)的长度计算逻辑完全不同:

  • 对bytes对象调用len()时,返回的是它占用的字节数量;
  • 而你想要统计的是实际的Unicode字符数量,这需要先把字节串解码成普通字符串再计算长度。

你代码里的元素是b'#Repost@motivated.mindset\n\xe3\x83\xbb\xe3\x83\xbb\xe3\x83\xbb\',这是一个UTF-8编码的字节串:

  • 像\xe3\x83\xbb这样的序列是UTF-8编码的单个Unicode字符ー,它占用3个字节,但作为字符只能算1个;
  • 其他ASCII字符(比如#、@、字母等)每个占用1个字节,字符数和字节数一致。
修正后的代码

只需要在计算长度前,把字节串用decode('utf-8')解码成字符串即可:

words = [b'#Repost@motivated.mindset\n\xe3\x83\xbb\xe3\x83\xbb\xe3\x83\xbb\'']
sum1 = sum(len(i.decode('utf-8')) for i in words)
print(sum1)
补充说明

如果你不确定字节串的编码格式,也可以在decode()时加上errors='replace'参数,避免因为编码不匹配抛出异常:

sum1 = sum(len(i.decode('utf-8', errors='replace')) for i in words)

这样就能得到你期望的实际字符总数了。

内容的提问来源于stack exchange,提问作者Sanket Badhe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:26