如果换行符以数字开头,则拆分python字符串

2024-10-03 19:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如果换行符以数字开头,我会尝试拆分文本

a="""1.pharagraph1 
    text1
    2.pharagraph2
    text2
    3.pharagraph3
    text3
    """

预期结果将是:

['1.pharagraph1 text1' , '2.pharagraph2 text2', '3.pharagraph3 text3']

我试过:re.split('\n\d{1}',a)但它对这个任务不起作用


Tags: 文本re数字split我会text1text2text3
2条回答

只有当换行符和空格后跟一个数字时,才可以使用前向拆分:

import re
result = re.split('\n\s+(?=\d)', a)

如果确实有前导空格,并且在创建示例字符串时没有输入错误,则可以使用

[re.sub(r'[^\S\n]*\n[^\S\n]*', ' ', x).strip() for x in re.split(r'\n[^\S\n]*(?=\d)', a)]
# => ['1.pharagraph1 text1', '2.pharagraph2 text2', '3.pharagraph3 text3']

Python demo

\n[^\S\n]*(?=\d)模式匹配一个换行符,然后匹配任何零个或多个水平空白([^\S\n]*),后跟一个数字。然后,在每个匹配中,0+水平空白、换行和0+水平空白的每个序列都被替换为一个空格

如果字符串没有前导空格,可以使用更简单的方法:

import re
a="""1.pharagraph1 
text1
2.pharagraph2
text2
3.pharagraph3
text3"""
print( [x.replace("\n"," ") for x in re.split(r'\n(?=\d)', a)] )
# => ['1.pharagraph1  text1', '2.pharagraph2 text2', '3.pharagraph3 text3']

online Python demo。在这里,字符串只需在一个换行符处拆分,该换行符后跟一个数字(\n(?=\d)),然后所有换行符都替换为一个空格

相关问题 更多 >