python按字节长度截取字符串(按bytes长度截取str)

本文总结了如何在Python中根据字节数截取字符串。需求源于字符串推送时不能超过4096字节的限制,既要尽可能保留内容,又不能超出限制。解决方案是先将字符串转为bytes,按字节数截取后再转回utf-8编码。参考了多篇相关博客以实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求: python将字符串按照字节数来截取,

找了很多文章都是有关联但又不能完全解决此需求,自己总结一下。

遇到的需求是:推送目标有字节数限制 最大4096字节,但我推送的是个字符串(包含中/英文、特殊符号),且想要尽可能多的将文本内容推送出去,所以按照字符串截取时 不想取太少,取太多又偶尔会超出限制。

下面列出代码:

str_txt = '测试文本ceshi'
cut_bytes = str_txt.encode('utf-8')
cut_tmp = cut_bytes[:900] # 此处截取bytes长度900
cut_res = cut_tmp.decode('utf-8', errors='ignore')  # 按bytes截取时有小部分无效的字节,传入errors='ignore'忽略错误
print('cut_res 长度 字节数', len(cut_res), len(cut_res.encode()))

具体思路为:先将str转换成bytes,再截取,然后转换成utf-8输出

参考文章:

python截取中文字符串_架构和代码-优快云博客_python截取中文字符串 (此文章给了我启发)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值