![](/img/trans.png)
[英]How do I read a JSON string in Python/Windows when the string contains non-UTF8 characters?
[英]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.