小编Wil*_*ill的帖子

re.findall... 发现太多了!:)

在 python 的 re.findall 中试验正则表达式时,我遇到了这个问题:

line = "Lorem ipsum HELLO dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh GOODBYE all"

X = re.findall("(HELLO)(.*)(GOODBYE)", line, flags=re.MULTILINE)

print (y)
Run Code Online (Sandbox Code Playgroud)

这将输出:

('HELLO', ' dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh ', 'GOODBYE')
Run Code Online (Sandbox Code Playgroud)

但我想要的更像是......

[('HELLO', ' dolor sit amet', 'GOODBYE'), ('HELLO', 'sed diam nonummy nibh ', 'GOODBYE')]
Run Code Online (Sandbox Code Playgroud)

因此,不是一次取一个,re.findall(基于我定义模式的方式)似乎正在寻找 HELLO 和 GOODBYE 的第一次和最后一次出现来定义列表元素,然后它放置所有内容中间的其他人进入中间组。

有没有办法按照我的方式获得它?我想也许“序列化” HELLO 和 GOODBYE 对可能会有所帮助,有点像这样:

line = "Lorem ipsum HELLO_1 dolor sit amet, …
Run Code Online (Sandbox Code Playgroud)

python python-re

1
推荐指数
1
解决办法
46
查看次数

标签 统计

python ×1

python-re ×1