WolfAvenue 发表于 2022-3-31 10:07

python json \ 转义问题

本帖最后由 WolfAvenue 于 2022-3-31 10:44 编辑

如下json格式字符串,经过反序列,然后序列化,内容变了,如何保持格式不变            testJsonStr='{"title":"qer\sdfde"}'
            testJsonStr=testJsonStr.replace('\\','@/')
            testJson=json.loads(testJsonStr)
            print(testJson)
            testJson['title']=testJson['title'].replace('@/','\\')
            newJsonStr=json.dumps(testJson,ensure_ascii=False)
            print(newJsonStr)


运行结果:
{'title': 'qer@/sdfde'}
{"title": "qer\\sdfde"}

随遇而安8 发表于 2022-3-31 10:32

看懂了,但是我不会,坐等大神

WolfAvenue 发表于 2022-3-31 10:46

只能在json序列化之后在替换了么{:301_971:}

grekevin 发表于 2022-3-31 10:55

你要保留什么样的格式,不懂你说的什么格式

WolfAvenue 发表于 2022-3-31 11:03

grekevin 发表于 2022-3-31 10:55
你要保留什么样的格式,不懂你说的什么格式

第一句那个格式 {"title":"qer\sdfde"}

用温柔将我杀死 发表于 2022-3-31 12:03

本帖最后由 用温柔将我杀死 于 2022-3-31 12:23 编辑

好东西学习了

grekevin 发表于 2022-3-31 12:03

WolfAvenue 发表于 2022-3-31 11:03
第一句那个格式 {"title":"qer\sdfde"}

{"title":"qer\sdfde"}这个字符串本来写的就有问题啊,python字符串中\是要转义的应该写成\\才是规范的
json.dumps()方法序列化成的json字符串肯定是要符合json规范的,里面的\是要转义的

grekevin 发表于 2022-3-31 12:19

你要是序列或反序列还是用pickle吧
import pickle

testpickleStr='{"title":"qer\sdfde"}'
testpickleStr=testpickleStr.replace('\\','@/')
print(testpickleStr)
testpickle=pickle.dumps(testpickleStr)
print(testpickle)
newpickleStr=pickle.loads(testpickle).replace("@/", "\\")
print(newpickleStr)
页: [1]
查看完整版本: python json \ 转义问题