我有一个示例数据如下:
(1) fshfonlpjspfmnfmnsjoide (2)dfljslmnljoifsjdjmfdsjf
foslndlknjhoihfodsiolnlnlkdfshoipfjhndfs subsection (3):wdjoinfeiu
(3)fwshfnlfgnoiuhwsoiuheoklnfsojoihoisnf
(i)fdfssd
(ii)flshf
(4)fjdspfj;mf;jspiojepjasm;lfmsdjipoj
对于上面的示例,我想在我收到段落起始编号的每个点打破数据,例如(1),(2),(3)等模式
但是我不想像第(3)款那样突破,这不是一个真正的新段落。
我使用了正则表达式:pattern_string = "(\n|\s\s\s\s\s\s\s)\(\d+\)"
当新段落在(1)这样的新行中开始时它工作正常但在段落不从新行开始时不起作用,例如(2)以上样本。 或者如果在新行中的模式之前有一个空格,例如(4)在它之前有一个空格。
答案 0 :(得分:0)
尝试使用重复(对于正则表达式,使用原始(r'...'
)字符串也是一种好习惯:
r"(^|\n\s*|\s{7,})\((\d+)\)"
这应匹配
处的数字^
\n\s*
\s{7,}
示例:
>>> re.split(r"(?:^|\n\s*|\s{7,})\(\d+\)", your_text)
['',
' fshfonlpjspfmnfmnsjoide',
'dfljslmnljoifsjdjmfdsjf\nfoslndlknjhoihfodsiolnlnlkdfshoipfjhndfs subsection (3):wdjoinfeiu',
'fwshfnlfgnoiuhwsoiuheoklnfsojoihoisnf\n (i)fdfssd\n (ii)flshf',
'fjdspfj;mf;jspiojepjasm;lfmsdjipoj']
只需删除第一个空字符串,即可获得所有4个部分