[英]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.