python转义引号的用法_使用正则表达式将转义的双引号替换为Python中的单引号

I am trying to replace escaped double quotes to single quotes in a key value pair

import re

import json

js = r'{"result":"{\"key\":\"How are you? \"Great!\" he said. \"Coffee ?\"\"},{\"key\":\" 2. \"Why not sure\". They walked away\"}"}'

#print(js)

data1 = json.loads(js)

s = data1['result']

#print(s)

# {"key":"How are you? "Great!" he said. "Coffee ?""},{"key":" 2. "Why not, sure.". They walked away"}

p = re.compile(r"\"key\":\"(.*\"(.*)\".*)\"")

print(p.sub(r'\'\2\'',s))

# {\'Why not, sure.\'}

json_string = "[{0}]".format(p.sub(r'\'\1\'',s))

data_list = json.loads(json_string)

With the above code, I got an output \'Coffee ?\' instead of the entire string. I would like to replace the double quote only within the value part.

String : "key":"How are you? "Great!" he said. "Coffee ?"",

Expected String : "key":"How are you? 'Great!' he said. 'Coffee ?'",

解决方案

This answer is just following the comments we've exchanged:

import json

js = r'{"result":"{\"key\":\"How are you? \"Great!\" he said. \"Coffee ?\"\"},{\"key\":\" 2. \"Why not sure\". They walked away\"}"}'

data1 = json.loads(js)

s = data1['result']

good_characters = [":","{","}", ","]

result = ""

for key, value in enumerate(s):

if (value == "\"" and s[key-1] not in good_characters) and (value == "\"" and s[key+1] not in good_characters):

result += '\''

else:

result += value

print (result)

Output

{"key":"How are you? 'Great!' he said. 'Coffee ?'"},{"key":" 2. 'Why not sure'. They walked away"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值