如何使用正则表达式将多行文本块解析为dict?

2024-09-29 23:27:04 发布

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

我有多行文字:

1. fef w fwe fwe
fewfa 2. fwa f
fwefwfw gw
2 2f 23. f
g gegwg
32. gre34 g3 1. gr
egsg

我想使用行开头的数字作为键(使用.作为分隔符)。
结果dict需要:

{
    "1": "fef w fwe fwe fewfa 2. fwa f fwefwfw gw",
    "2": "2f 23. f g gegwg",
    "32": "gre34 g3 1. gr egsg"
}

Tags: 数字dict文字gw分隔符grg3fwe
1条回答
网友
1楼 · 发布于 2024-09-29 23:27:04

您可以使用以下正则表达式:

/^(\d+)\.?\s+(.*?)(?=(?:^\d+\.?)|\Z)/gms

 ^                                       assert start of line
    ^                                    capture 1 or more digits
       ^                                 optional literal . 
           ^                             one or more spaces
               ^                         every character including \n  
                    ^                    lookahead to next block start or end                                 
                                     ^   flags M for multiline and S to have 
                                         dot match all     

Demo

然后你可以这样创建dict:

>>> dict(re.findall(r'^(\d+)\.?\s+(.*?)(?=(?:^\d+\.?)|\Z)', s, re.M|re.S))
{'1': 'fef w fwe fwe\nfewfa 2. fwa f\nfwefwfw gw\n', '32': 'gre34 g3 1. gr\negsg', '2': '2f 23. f\ng gegwg\n'}

相关问题 更多 >

    热门问题