如果空格在双引号之间,我想替换一个空格来加下划线.示例:

given    = 'hello "welcome to" python "blog"'
expected = 'hello "welcome_to" python "blog"'

我的实际字符串是SQL代码,我需要将其转换为使用下划线进行migrations.

我所try 的

import re

s = 'hello "welcome to" java 2 "blog"'
a = re.sub('(\"[\w\s]+\")', '_', s)
print (a)

我也在谷歌上试了又试,但还没有找到.

在Python中怎么做?

推荐答案

如果您不是被迫使用正则表达式,请不要使用,因为这在这里不是一个好的 Select .

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)
'hello "welcome_to" python "blog"'

如果你愿意,你可以用列表理解来做这件事,但它看起来更糟

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

或格式化的

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

Python相关问答推荐

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

比较2 PD.数组的令人惊讶的结果

如何访问所有文件,例如环境变量

如何制作10,000年及以后的日期时间对象?

Python库:可选地支持numpy类型,而不依赖于numpy

使用@ guardlasses. guardlass和注释的Python继承

迭代嵌套字典的值

在Python中调用变量(特别是Tkinter)

matplotlib + python foor loop

在numpy数组中寻找楼梯状 struct

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion

语法错误:文档. evaluate:表达式不是合法表达式

Python Mercury离线安装

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

应用指定的规则构建数组

用由数据帧的相应元素形成的列表的函数来替换列的行中的值

如何在Pandas中用迭代器求一个序列的平均值?

仅取消堆叠最后三列

如何将django url参数传递给模板&S url方法?

为什么在安装了64位Python的64位Windows 10上以32位运行?