Python如何在格式化JSON字符串时添加反斜杠字符?

2024-04-28 23:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'grault', 'garply', 'waldo'],我必须获取列表中的每一项,并为JSON字符串添加\"作为前缀,\"作为后缀。在

示例JSON字符串是(我想要的输出):"{\"Names\":[\"foo\",\"bar\",\"baz\",\"qux\"]}"。在

另外,为什么我必须为JSON字符串加上\?当我不带反斜杠发送时,服务器会拒绝它。在

当我尝试这样做时:

x = "{\"Names\":[{0}]}"
y = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'grault', 'garply', 'waldo']
z = ''
for item in y:
        z += "\"{0}\",".format(item)
x.format(z)

反斜杠没有我想要的效果。在


Tags: 字符串json列表foonamesbarbazitem
2条回答

你应该停止尝试重新发明轮子,而改用^{} module

import json

json.dumps({'Names': y})

更一般地说,如果使用单引号,则不必转义这里的双引号;逗号可以通过使用str.join()来处理:

^{pr2}$

演示:

>>> import json
>>> y = ['foo', 'bar', 'baz', 'qux', 'quux', 'corge', 'grault', 'garply', 'waldo']
>>> json.dumps({'Names': y})
'{"Names": ["foo", "bar", "baz", "qux", "quux", "corge", "grault", "garply", "waldo"]}'

以及

>>> ','.join(['"{0}"'.format(item) for item in y])
'"foo","bar","baz","qux","quux","corge","grault","garply","waldo"'

这是Python字符串文本的一种怪癖,而不是JSON。因为您用""s引用字符串文本,所以字符串中的任何引号都必须用反斜杠转义。可以通过在字符串周围使用单引号而不是双引号来避免这种情况。在

相关问题 更多 >