簡體   English   中英

如何在Python中格式化JSON字符串

[英]How to format json string in Python

我有一些json格式的字符串,例如'{"key1":{0}, "key2":{1}}'

之后,我檢索json字符串並替換為值。 '{"key1":{0}, "key2":{1}}'.format("value1", "value2") KeyError: '"key1"

問題是由括號{引起的,我應該在字符串中使用{{}} ,但是,在字符串中添加{並不容易,因為括號可能會出現在中間部分,例如'{"key1":{0}, "key2":{1}, "{3}":"value3"}'

如何格式化json字符串?

如果您自己構建這些字符串或對其進行控制,可以發送其他格式,或者將該值構建為字典並使用json.dumps

但是,如果確實需要執行此操作,並且可以保證替換值的格式為{X} ,則可以使用以下kludge來轉義字符串:

import re
s = '{"key1":{0}, "key2":{1}}'
begin = re.compile(r'{(?!\d)')
end = re.compile(r'(?<!\d)}')
escaped = end.sub('}}', begin.sub('{{', s))
print(escaped.format(1, 2))

結果是

{"key1":1, "key2":2}

請注意,這不是最佳解決方案。 考慮到您可以控制字符串,您應該以其他方式轉義它們。 也許使用%語法而不是str.format

不要嘗試將數據作為編碼字符串來處理。 嘗試應用格式之前,請解碼JSON。

import json

json_data = '{"key1":"{0}","key2":"{1}"}'
format_args = ["value1", "value2"]

data = json.loads(json_data)
formatted_data = {key: value.format(*format_args) for key, value in data.items()}

然后,如果需要,您可以將格式化的數據重新編碼為JSON。

暫無
暫無

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

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