多组替换re.sub问题

问题描述 投票:0回答:1

我有这段代码,但我真的不知道为什么它不起作用。我想用 Nothing 替换 SOMETHING 并删除其中包含空格和 50 的行。

预期输出:

NOTHING
1  1
2345234
abcdefg
foobar
wrwerdfdsf
import re

s = """SOMETHING
1  1
2345234
abcdefg
foobar
    50
wrwerdfdsf"""

repl = {'SOMETHING': 'NOTHING', '    50\n': ''}
n = re.sub(
    r'^(SOMETHING)\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n(    50\n)',
    lambda x: repl[x.group()] if x.group() in repl else x.group(),
    s,
    flags=re.M
)

它不能替代任何东西。也许我需要在

x.group()
的括号里写点什么?

python regexp-replace
1个回答
0
投票

这是更新版本:

import re

s = """SOMETHING
1  1
2345234
abcdefg
foobar
    50
wrwerdfdsf"""

repl = {'SOMETHING': 'NOTHING', '50': ''}
n = re.sub(r'\s{2}', '',re.sub(r'^.*$', lambda x: repl.get(x.group().strip(), x.group()), s, flags=re.M))
print(n)

首先需要替换单词,然后删除其中的空行

© www.soinside.com 2019 - 2024. All rights reserved.