Python 将一对单引号内的单引号替换为双引号

Python 将一对单引号内的单引号替换为双引号,python,regex,Python,Regex,以下是我想要的: curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" 结果: curl -X POST -H "Content-type: application/json" -d '{"group":"admin","users":["stack", "overflow"]}' 需要正则表达式将[]之间

以下是我想要的:

curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url"
结果:

curl -X POST -H "Content-type: application/json" -d '{"group":"admin","users":["stack", "overflow"]}'

需要正则表达式将
[]
之间的单词从单引号替换为双引号。

您需要获得开括号和闭括号的位置,然后将
'
替换为
。您可以执行以下操作:

_str = """curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" """

start = _str.find ("[")
end = _str.find ("]")
buff = _str[start:end].replace ("'", "\"")
_str = _str[:start] + buff + _str[end:]

希望这有帮助!

一种正则表达式方法,使用lambda inside
re.sub
代替替换字符串模式:

import re
s = """curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":['stack', 'overflow']}' "url" """
res = re.sub(r"\[.*?]", lambda x: x.group().replace("'", '"'), s)
print(res)
# => curl -X POST -H "Content-type: application/json" -d '{"group":"stash-adt_ooms-dev","users":["stack", "overflow"]}' "url" 

\[.*?]
正则表达式匹配一个文本
[
,然后匹配除换行符以外的零个或多个字符(如果要跨多行匹配子字符串,请将
flags=re.DOTALL
添加到
re.sub
),尽可能少地匹配到也使用的第一个
]

lambda获取匹配数据对象
x
,并仅在匹配值
.group()
内,即在输入字符串中的所有
[…]
子字符串内,将
'
替换为

a = "curl -X POST -H \"Content-type: application/json\" -d '{\"group\":\"stash-adt_ooms-dev\",\"users\":['stack', 'overflow']}' \"url\""

b = re.sub(r'\[\'(\w+)\', \'(\w+)\'\]',r'["\1", "\2"]' , a)
打印b将导致以下结果:

'curl -X POST -H "Content-type: application/json" -d \'{"group":"stash-adt_ooms-dev","users":["stack", "overflow"]}\' "url"'

在输出中,不仅
被替换为
,而且值也发生了变化。您想要这个吗?不……我需要的正是结果中提到的内容。您可以帮助将其与结果保持一致吗