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