Python正则表达式匹配分组

2024-09-29 23:24:26 发布

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

RANDOMSTRING是字母数字,包含最多50个字符的空格

RANDOMSTRING $RANDOMFLOAT Paid with Visa ending in RANDOMINT *- For: RANDOMSTRING -*

RANDOMINTx *RANDOMSTRING* (RANDOMSTRING)
=E2=80=A2 RANDOMSTRING1

$RANDOMFLOAT
RANDOMINTx RANDOMSTRING (RANDOMSTRING)
=E2=80=A2 RANDOMSTRING2
=E2=80=A2 RANDOMSTRING3
=E2=80=A2 RANDOMSTRING4
=E2=80=A2 RANDOMSTRING5

$RANDOMFLOAT
RANDOMINTx *RANDOMSTRING* (RANDOMSTRING)
=E2=80=A2 RANDOMSTRING6
=E2=80=A2 RANDOMSTRING7

$RANDOMFLOAT
RANDOMINTx *RANDOMSTRING* (RANDOMSTRING)
=E2=80=A2 RANDOMSTRING8
=E2=80=A2 RANDOMSTRING9

你好,我想把每个RANDOMSTRING行中的=E2=80=A2作为一个数组。它们按照=E2=80=A2分组。你知道吗

预期输出示例:

[[RANDOMSTRING1], [RANDOMSTRING2, RANDOMSTRING3, RANDOMSTRING4, RANDOMSTRING5], [RANDOMSTRING6, RANDOMSTRING7], [RANDOMSTRING8, RANDOMSTRING9]]

我使用的是:

menu_item_accessories_items = re.findall("((=E2=80=A2 .*$)|\n\n)", bodytext, re.MULTILINE)

我得到的输出(touple数组):

[(RANDOMSTRING1, RANDOMSTRING1), (RANDOMSTRING2, RANDOMSTRING2), (RANDOMSTRING3, RANDOMSTRING3), (RANDOMSTRING4, RANDOMSTRING4), (RANDOMSTRING5, RANDOMSTRING5), (RANDOMSTRING6, RANDOMSTRING6), (RANDOMSTRING7, RANDOMSTRING7), (RANDOMSTRING8, RANDOMSTRING8), (RANDOMSTRING9, RANDOMSTRING9)]

Tags: a2数组e2randomstringrandomstring1randomstring7randomstring5randomstring3
1条回答
网友
1楼 · 发布于 2024-09-29 23:24:26

这可能不是最优雅的方法,我不确定它将如何处理这里没有介绍的角落案例,但是下面的代码首先构建一个由空行分隔的列表。然后它遍历所有条目,每次遇到分隔符时都创建一个新列表。你知道吗

lines = [x for x in bodytext.split('\n') if x == '' or x.startswith('=E2=80=A2')]

res = []
tmp = []
for line in lines:
    if line == '':
        if len(tmp) > 0:
            res += [tmp]
        tmp = []
    else:
        tmp += line.split(' ')[1:]

print res

相关问题 更多 >

    热门问题