匹配两个分隔符之间的所有文本、添加字符串和索引

2024-05-20 04:08:33 发布

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

我有一系列这样的字符串:

*question: Question 1 
    *shuffle
    Answer 1
    Answer 2
    *save: q1
    *throwaway  
>> q1_answer = "Answer 1"

*question: Question 2 
    *shuffle
    Answer 1
    Answer 2
    Answer 3
    *save: q2
    *throwaway  
>> q2_answer = "Answer 2"

我需要匹配*question行和>>行之间的文本,缩进整个文本块,并在其前面添加术语*group

例如:

*group
    *question: Question 1 
        *shuffle
        Answer 1
        Answer 2
        *save: q1
        *throwaway  
    >> q1_answer = "Answer 1"

*group  
    *question: Question 2 
        *shuffle
        Answer 1
        Answer 2
        Answer 3
        *save: q2
        *throwaway  
    >> q2_answer = "Answer 2"

我可以这样匹配question行:

rx = re.compile(r'(\*question.+)', re.M)

我可以这样匹配>>行:

rx2 = re.compile(r'(\>.+)', re.M)

但我不知道如何匹配这两个分隔符之间的所有内容并对其进行制表


Tags: 字符串answer文本resavegroup术语question
1条回答
网友
1楼 · 发布于 2024-05-20 04:08:33

使用re.sub()。替换可以是一个计算新字符串的函数,因此它可以添加选项卡

new_text = re.sub(r'\*question.+?>>', 
        lambda m: '*group\n\t' + m.group(0).replace('\n', '\n\t'), 
        text, 
        flags=re.DOTALL)

DEMO

相关问题 更多 >