首页 > 解决方案 > Python 条件拆分

问题描述

给定这个字符串:

s = '01/03/1988 U/9 Mi\n08/19/1966 ABC\nDEF\n12/31/1999 YTD ABC'

我想在每条新记录(以日期开头)上拆分它,如下所示:

['01/03/1988 U/9 Mi', '08/19/1966 ABC\nDEF', '12/31/1999 YTD ABC']

注意到 ABC 和 DEF 之间额外的新行分隔符了吗?这就是我面临的挑战。我想保留它而不在那里分裂。我想我需要有条件地拆分这些分隔符:

['01/', '02/','03/', '04/', '05/', '06/', '07/', '08/', '09/', '10/', '11/', '12/']

有没有一种简单的方法可以使用re.findall这种方式,还是有更好的方法?

提前致谢!

标签: pythonsplit

解决方案


您可以在新行上拆分,后跟带有前瞻的日期。就像是:

import re

s = '01/03/1988 U/9 Mi\n08/19/1966 ABC\nDEF\n12/31/1999 YTD ABC'
re.split(r'\n(?=\d{2}/\d{2}/\d{4})', s)

# ['01/03/1988 U/9 Mi', '08/19/1966 ABC\nDEF', '12/31/1999 YTD ABC']

根据您的数据,您可以简化为仅一个换行符后跟 2 位数字:r'\n(?=\d{2})'


推荐阅读