将双引号之间的空格替换为下划线

hna*_*sdy 2 python string replace

如果空格位于双引号之间,我想将空格替换为下划线。例子:

given    = 'hello "welcome to" python "blog"'
expected = 'hello "welcome_to" python "blog"'
Run Code Online (Sandbox Code Playgroud)

我的实际字符串位于 SQL 代码中,我需要将其转换为使用下划线进行迁移。

我尝试过的

given    = 'hello "welcome to" python "blog"'
expected = 'hello "welcome_to" python "blog"'
Run Code Online (Sandbox Code Playgroud)

也一直在尝试谷歌,但还没有找到。

在Python中怎么做?

Sam*_*jig 5

如果您没有被迫使用正则表达式,请不要使用,因为这不是一个好的选择。

inp = 'hello "welcome to" python "blog"'
data = inp.split('"')
for i, part in enumerate(data[:-1]):
    if i % 2 == 1:
        data[i] = part.replace(' ', '_')
out = '"'.join(data)
print(out)
Run Code Online (Sandbox Code Playgroud)
'hello "welcome_to" python "blog"'
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以用列表理解来做到这一点,但在我看来它看起来更糟

'"'.join(s if i % 2 == 0 else s.replace(' ', '_') for i, s in enumerate(inp.split('"')))
Run Code Online (Sandbox Code Playgroud)

或格式化

'"'.join(
    s if i % 2 == 0
    else s.replace(' ', '_')
    for i, s in enumerate(inp.split('"')[:-1])
)
Run Code Online (Sandbox Code Playgroud)