如何分割含冒号的字符串且不拆分时间格式中的冒号?
解决方案
要解决这个问题,关键是只分割非时间格式里的冒号,同时保留换行、逗号作为分割符。可以利用正则表达式的负向环视断言,排除时间中位于数字之间的冒号(比如00:00:00里的冒号)。
实现代码
import re values = 'City:hell\nCountry:rome\nUpdate date: 2022-09-26 00:00:00' # 分割规则:换行、逗号,或非数字前后的冒号 result = re.split(r'\n|,|:(?!\d)|(?<!\d):', values) # 清理空字符串和多余空格 result = [item.strip() for item in result if item.strip()] print(result)
输出结果
['City', 'hell', 'Country', 'rome', 'Update date', '2022-09-26 00:00:00']
正则说明
\n|,:直接匹配换行和逗号作为分割符:(?!\d):匹配后面不紧跟数字的冒号(比如字段名Update date后的冒号)(?<!\d)::匹配前面不是数字的冒号(补充场景,避免误分割非时间格式的数字后冒号)
这样就能精准避开时间格式里的冒号,同时完成预期的分割需求。
内容的提问来源于stack exchange,提问作者Mustapha Unubi Momoh
相关产品推荐
相关产品推荐

