我有一个列表['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)
它不能像我想要的那样使用反斜杠。
答案 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。由于您使用""
引用字符串文字,因此必须使用反斜杠转义字符串中的任何引号 。您可以通过在字符串周围使用单引号而不是双引号来避免这种情况。