为什么还有一个附加的“ \”

时间:2019-04-26 05:35:46

标签: python

我正在处理两个变量,一个是指标名称,另一个是数字或字符串。它们都不包含特殊字符。我想将其转换为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\"

那为什么还要增加一个\?如何摆脱它?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

由于\字符是特殊字符,因此需要转义才能打印。因此,第一个\转义第二个\,而第三个\转义双引号字符。

您不需要除掉它,因为它可以按预期打印。

答案 1 :(得分:0)

为什么不只使用json


print(json.loads("{\"dau\": 123}"))
#{'dau': 123}
print(json.dumps({'dau': 123}))
#{"dau": 123}