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

时间:2014-06-02 20:47:49

标签: python json string

我有一个列表['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)

它不能像我想要的那样使用反斜杠。

2 个答案:

答案 0 :(得分:4)

您将不再尝试重新发明轮子并改为使用json module

import json

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

更一般地说,如果你使用单引号,你不必在这里使用双引号;可以使用str.join()

处理逗号
z = ','.join(['"{0}"'.format(item) for item in y])

演示:

>>> 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"'

答案 1 :(得分:0)

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