Python如何基于json对象格式化字符串?

时间:2017-08-21 22:16:15

标签: python json string dynamic formatting

我有一个类似

的JSON文件
{
  "a": "1",
  "b": "2",
  "c": "3"
}

我希望根据该JSON格式化此字符串

"Blah {a} Blah Blah {b} {c}"

输出

"Blah 1 Blah Blah 2 3"

我没有尝试过任何东西,而且我无法通过Google搜索来找到任何内容(Python how to format string based on json),大多数搜索结果只是打印JSON。

2 个答案:

答案 0 :(得分:4)

您可以使用str.format轻松完成此操作。假设您已将JSON数据作为字典加载到内存中:

>>> data = {
  "a": "1",
  "b": "2",
  "c": "3"
}
>>> "Blah {a} Blah Blah {b} {c}".format(**data)
'Blah 1 Blah Blah 2 3'

如果您不确定如何将JSON字符串加载到内存中,请使用json.loads

>>> from json import loads
>>> data = loads('{ "a": "1", "b": "2", "c": "3" }')
>>> data
{'a': '1', 'b': '2', 'c': '3'}

所以,放在一起,完整的脚本将是:

from json import loads
data = loads('{ "a": "1", "b": "2", "c": "3" }')
print("Blah {a} Blah Blah {b} {c}".format(**data))

答案 1 :(得分:0)

如果你的代码中有JSON数组作为变量,如下所示

data = {
  "a": "1",
  "b": "2",
  "c": "3"
}

然后,您可以根据数据变量中定义的键/值对中的键名称调用这些单独的项目。

然后可以像

一样简单
new_string = "Blah " + str(data["a"]) + " blah blah " + str(data["b"]) + " " + str(data["c"])

变量new_string将是“Blah 1 blah blah 2 3”

我使用了str()方法,以防JSON数组中的内容不是字符串。

如果你想对它进行更多编程,并且字符串将使用不同的数据集多次生成,你可以这样做,但是使用对你和你的项目有意义的变量名称并制作成一个功能。

data = {"a": "1", "b": "2", "c": "3"}
var_0 = str(data["a"])
var_1 = str(data["b"])
var_2 = str(data["c"])
new_string = "Blah " + var_0 + " blah blah " + var_1 + var_2

然后从那里你可以用new_string

做任何你需要的事情