簡體   English   中英

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

[英]Python - How do I add the backslash characters when formatting a 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)

它不起作用,因為我希望使用反斜杠。

您將不再嘗試重新發明輪子,而是使用json模塊

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

這是Python字符串文字的怪癖,尤其不是JSON。 既然你引用的字符串字面量以"" S,字符串的任何報價必須與反斜杠轉義。 您可以通過在字符串周圍使用單引號而不是雙引號來避免這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM