Python正则分割字符串并保留指定分隔符的问题排查
解决Python正则分割时保留分隔符并生成预期子串的问题
你当前的正则分割逻辑错误,导致分割点过于零散,无法得到预期的子串分组。要实现需求,需要精准定位分割边界——即在逗号后紧跟空格+大写字母、句号后紧跟空格、换行符后紧跟空格的位置进行分割,同时保留分隔符在对应子串中。
解决方案代码
import re input_string = "Sus cosas deben ser llevadas allí, ella tomo a sí, Lucy la hermana menor, esta muy entusiasmada. por verte hoy por la tarde\n sdsdsd" # 精准匹配分割边界:逗号后接空格大写字母、句号后接空格、换行后接空格 result_list = re.split(r'(?<=,)(?= [A-Z])|(?<=\.)(?= )|(?<=\n)(?= )', input_string) print(result_list)
正则逻辑解释
(?<=,)(?= [A-Z]):正向后顾断言匹配逗号,正向预查断言匹配空格+大写字母——在逗号和空格之间分割,保留逗号在前一子串,空格+大写字母在后一子串(?<=\.)(?= ):在句号和后续空格之间分割,保留句号在前一子串(?<=\n)(?= ):在换行符和后续空格之间分割,保留换行符在前一子串
运行代码后输出完全符合预期:
["Sus cosas deben ser llevadas allí, ella tomo a sí,", " Lucy la hermana menor, esta muy entusiasmada.", " por verte hoy por la tarde\n", " sdsdsd"]
内容的提问来源于stack exchange,提问作者Matt095
相关产品推荐
相关产品推荐

