我很困惑为什么这不起作用。我正在尝试在JSON中添加我的变量值,每次添加它时,它都没有在我的JSON字符串中正确显示。
hostname = "machineA.host.com"
我需要将以上主机名信息添加到下面的JSON文档中 -
b"{\"Machine Name\":\"\"+hostname+\"\"}", None, True)
但是每当我以上述方式添加它时,它根本就不起作用。
不确定我在这里做错了什么?
答案 0 :(得分:13)
您正在转义字符串中的内部双引号"
。它应该是:
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
答案 1 :(得分:2)
而不是操纵字符串考虑将数据作为python结构,然后将其转储到json
>>> d = {}
>>> d['Machine Name'] = hostname
>>> json.dumps(d)
'{"Machine Name": "machineA.host.com"}'