如何在python定义的字符串中保留转义引号

e5njpo68  于 2023-03-31  发布在  Python
关注(0)|答案(1)|浏览(200)

我有一个用例,我需要传递一个包含转义字符串属性的请求体。因此,我需要创建一个带转义双引号的字符串,并以这种形式保存它。

a = "{\"key1\":\"value1\",\"key2\":\"value2\"}"

尝试上面的方法,当print(a)时,python实际上已经取消了字符串的转义;“key1”:“value1”,“key2”:“value2”}
虽然我的要求是,做一个打印(a)它应该只打印它的原始形式:"{\"key1\":\"value1\",\"key2\":\"value2\"}"
有什么建议吗?

gudnpqoy

gudnpqoy1#

选项1

使用raw字符串,r''

>>> "{\"key1\":\"value1\",\"key2\":\"value2\"}"
'{"key1":"value1","key2":"value2"}'
>>> r"{\"key1\":\"value1\",\"key2\":\"value2\"}"
'{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}'

选项二

使用json.dumps()

>>> from json import dumps
>>> s = "{\"key1\":\"value1\",\"key2\":\"value2\"}"
>>> s
'{"key1":"value1","key2":"value2"}'
>>> dumps(s)
'"{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}"'
>>> dumps(s)[1:-1]
'{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}'

总结

下面是两种方法的示例:

import json

a = "{\"key1\":\"value1\",\"key2\":\"value2\"}"
a_raw = r"{\"key1\":\"value1\",\"key2\":\"value2\"}"

print(a)

print(a_raw)
print(json.dumps(a)[1:-1])

# they are the same
assert a_raw == json.dumps(a)[1:-1]

相关问题