我正在处理两个变量,一个是指标名称,另一个是数字或字符串。它们都不包含特殊字符。我想将其转换为JSON格式并将其插入mysql文本类型列。结果预期为:
"{\"dau\": 123}"
我的代码是:
for i in range(len(hub_queries['data'])):
query = hub_queries['data'][i]['content'].format('2019-04-21')
query_job = bq_client.query(query)
for row in query_job:
k = ""
for i in range(len(row)):
if unicode(row[i]).isnumeric():
ai = "\\\"{}\\\": {}".format(query_job._query_results._properties['schema']['fields'][i]['name'], row[i])
else:
ai = "\\\"{}\\\": \\\"{}\\\"".format(query_job._query_results._properties['schema']['fields'][i]['name'], row[i])
if i != len(row)-1:
k=k+ai+","
else:
k=k+ai+"}"
metrics.append("{"+k)
print(metrics)
结果返回:
'{\\"dau\\": 123}'
字符串中有两个\
符号。但是,当我尝试:
print "\\\"{}\\\": \\\"{}\\\"".format(1,2)
它按预期返回:
\"1\": \"2\"
那为什么还要增加一个\
?如何摆脱它?任何帮助表示赞赏。
答案 0 :(得分:0)
由于\字符是特殊字符,因此需要转义才能打印。因此,第一个\转义第二个\,而第三个\转义双引号字符。
您不需要除掉它,因为它可以按预期打印。
答案 1 :(得分:0)
为什么不只使用json库
print(json.loads("{\"dau\": 123}"))
#{'dau': 123}
print(json.dumps({'dau': 123}))
#{"dau": 123}