gpt4 book ai didi

Python正则表达式拆分段落

转载 作者:太空狗 更新时间:2023-10-30 00:58:10 29 4
gpt4 key购买 nike

如何在 Python 中编写一个正则表达式来拆分段落?

一个段落由两个换行符 (\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 个 \n

最佳答案

不幸的是,没有写“空格但不是换行符”的好方法。

我认为你能做的最好的事情就是用 x 修饰符添加一些空间,并尝试稍微排除丑陋之处,但这是有问题的:(?x) (?: [\t\r\f\v]*?\n ){2} [\t\r\f\v]*?

您也可以尝试为字符类创建一个子规则并将其插入三次。

关于Python正则表达式拆分段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/116494/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com