如何在Python中拆分以换行后句号开头的字符串?
问题解决:按特定分隔符拆分文本
为什么你的正则不生效
你用re.split('^\.', txt)无法匹配到目标句号,原因有两个:
- 默认模式下,
^只匹配整个字符串的起始位置,而你要匹配的句号是在\r之后,属于字符串中间的位置,自然匹配不到。 - 即便开启多行模式(
re.MULTILINE),Python的正则中^仅识别\n作为换行分隔符,而你的文本里用的是\r,所以依然无法把\r后的句号识别为行首。
正确的解决方案
你的文本里,条目之间的分隔符是\r.(或\r. ,带空格),直接针对这个分隔符拆分即可,再清理每个条目里的多余\r和空格:
import re txt = "\ra. skin lateral biopsy:\r -positive for disease \r.\rb. skin medial biopsy:\r -negative for disease \r. \rc. skin floor biopsy:\r -negative for disease" # 拆分:匹配\r后跟.,再跟任意数量的空白字符 split_parts = re.split(r'\r\.\s*', txt) # 过滤空条目,替换每个条目里的\r为空格,清理前后多余空格 final_result = [part.replace('\r', ' ').strip() for part in split_parts if part.strip()] print(final_result)
运行后会得到预期结果:
["a. skin lateral biopsy: -positive for disease", "b. skin medial biopsy: -negative for disease", "c. skin floor biopsy: -negative for disease"]
内容的提问来源于stack exchange,提问作者Andy Chen
相关产品推荐
相关产品推荐

