Python字符串分割:如何在指定词汇/助词前方分割并保留该词汇
字符串分割需求与实现
常规分割的问题
现有如下代码对路径字符串进行分割:
s = "/works/proj/kod/resources/excel/words/tam.xls" p = s.split("/kod") print(p)
运行结果为:
['/works/proj', '/resources/excel/words/tam.xls']
可以看到split方法会把分隔符/kod本身从结果中移除,但实际需要在分隔符前方进行分割,保留分隔符在第二部分的开头,期望得到如下结果:
['/works/proj', '/kod/resources/excel/words/tam.xls']
解决方案
方案1:字符串定位与切片
通过find方法找到分隔符的起始位置,再对原字符串进行切片拆分,无需额外导入模块:
s = "/works/proj/kod/resources/excel/words/tam.xls" sep = "/kod" # 定位分隔符的起始索引 sep_index = s.find(sep) if sep_index != -1: # 拆分字符串:从开头到分隔符前,以及从分隔符开始到结尾 result = [s[:sep_index], s[sep_index:]] else: # 未找到分隔符时返回原字符串组成的列表 result = [s] print(result)
方案2:正则零宽断言分割
借助正则的正向预查(?=...),可以在不消耗分隔符的前提下定位分割位置,精准实现需求:
import re s = "/works/proj/kod/resources/excel/words/tam.xls" sep = "/kod" # 用re.escape处理分隔符,避免特殊字符干扰正则匹配 result = re.split(f'(?={re.escape(sep)})', s, maxsplit=1) print(result)
maxsplit=1参数确保只执行一次分割,避免出现过多拆分结果。
内容的提问来源于stack exchange,提问作者user3541631
相关产品推荐
相关产品推荐

