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

Python按每第5个逗号分割字符串时如何获取末尾剩余内容

问题原因

你写的正则只会匹配恰好包含5个逗号分隔值的片段,末尾不足5个值的剩余内容因为不满足匹配规则,直接被丢弃了,所以拿不到最后的da。

实现方案

正则修正版

调整正则匹配逻辑,除了匹配满5个值的完整分组,额外匹配字符串末尾剩余的不足5个值的片段即可:

import re
my_string = 'abc,kjj,hg,kj,ls,jsh,ku,lo,sasad,hh,da'
a = re.findall(r'(?:[^,]+,){4}[^,]+|[^,]+$', my_string)

运行后输出和预期完全一致:

['abc,kjj,hg,kj,ls', 'jsh,ku,lo,sasad,hh', 'da']

正则逻辑说明:

  • (?:[^,]+,){4}[^,]+:匹配4个「值+逗号」的组合,再接1个值,刚好对应5个值的完整分组
  • |[^,]+$:匹配到字符串末尾的所有剩余值,不管剩几个都能捕获,不会漏掉尾部内容

非正则实现(更推荐)

正则写法可读性一般,后续如果要调整分组大小还要改正则规则,更简单的方式是先全部分割再按组切片拼接,逻辑直白不容易出错:

my_string = 'abc,kjj,hg,kj,ls,jsh,ku,lo,sasad,hh,da'
items = my_string.split(',')
a = [','.join(items[i:i+5]) for i in range(0, len(items), 5)]

这个写法不管总长度是多少,最后剩余不足5个值的部分都会自动作为最后一个元素返回,后续要改成每3个、每10个值分割,只需要把代码里的数字5改成对应值就行,维护成本低很多。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:18:13