【发布时间】:2010-09-12 02:28:47
【问题描述】:
如何编写一个正则表达式在 python 中使用来分割段落?
段落由 2 个换行符 (\n) 定义。但是可以有任意数量的空格/制表符以及换行符,它仍然应该被视为一个段落。
我正在使用 python,所以解决方案可以使用 python 的 regular expression syntax 扩展。 (可以使用(?P...)的东西)
示例:
the_str = 'paragraph1\n\nparagraph2'
# splitting should yield ['paragraph1', 'paragraph2']
the_str = 'p1\n\t\np2\t\n\tstill p2\t \n \n\tp3'
# should yield ['p1', 'p2\t\n\tstill p2', 'p3']
the_str = 'p1\n\n\n\tp2'
# should yield ['p1', '\n\tp2']
我能提供的最好的方法是:r'[ \t\r\f\v]*\n[ \t\r\f\v]*\n[ \t\r\f\v]*',即
import re
paragraphs = re.split(r'[ \t\r\f\v]*\n[ \t\r\f\v]*\n[ \t\r\f\v]*', the_str)
但这很丑。有更好的吗?
编辑:
建议被拒绝:
r'\s*?\n\s*?\n\s*?' -> 这将使示例 2 和示例 3 失败,因为 \s 包含 \n,因此它允许使用超过 2 个 \ns 的段落分隔符。
【问题讨论】:
标签: python regex parsing text split