一尘不染

在Python中的JSON字符串中添加变量值

json

我很困惑为什么这不起作用。我正在尝试在JSON中添加变量值,每次添加它时,它在JSON字符串中均无法正确显示。

hostname = "machineA.host.com"

我需要将以上主机名信息添加到以下JSON文档中-

b"{\"Machine Name\":\"\"+hostname+\"\"}", None, True)

但是每当我以上述方式添加它时,它就根本不起作用。

不知道我在这里做什么错?


阅读 953

收藏
2020-07-27

共1个答案

一尘不染

您正在转义"字符串中的内部双引号。它应该是:

b"{\"Machine Name\":\""+hostname+"\"}", None, True)

在python中,您还可以'对字符串使用单引号-并且不需要在单引号字符串内转义双引号

b'{"Machine Name":"'+hostname+'"}', None, True)

不过,有两种更好的方法可以做到这一点。第一种是字符串格式,它将变量插入到字符串中:

b'{"Machine Name":"%s"}' % hostname # python 2.x (old way)
b'{{"Machine Name":"{0}"}}'.format(hostname) # python >= 2.6 (new way - note the double braces at the ends)

接下来是Python JSON模块,方法是将python
dict转换为JSON字符串

>>> hostname = "machineA.host.com"
>>> data = {'Machine Name': hostname}
>>> json.dumps(data)
'{"Machine Name": "machineA.host.com"}'

这可能是首选方法,因为它将处理主机名和其他字段中的怪异字符,以确保末尾具有有效的JSON。

您是否有理由使用 bytestring

2020-07-27