Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么会有一个额外的\&引用;_Python - Fatal编程技术网

Python 为什么会有一个额外的\&引用;

Python 为什么会有一个额外的\&引用;,python,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

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

那么为什么会有一个额外的
\
?如何摆脱它?非常感谢您的帮助。

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

你不需要扔掉它,因为它可以按预期打印

为什么不直接使用库呢


由于
\
用于编码特殊字符,例如
\n
\t
…,
\
本身使用双
\
编码。这只是表示,它是“虚拟的”,你不需要去掉它…你的字符串是什么样子的?你要转换的那个@谢谢你的回复。对不起,我没说清楚。实际上,它是两个变量,一个是像“dau”一样的字符串,另一个是数字或字符串,像123。结果应该是
“dau\”:123
您能用这些信息更新您的问题吗?停止手动构建JSON。只需构建一个dict并
json.dump
。它将为您正确处理所有转义,让您更简单地理解为什么它是正确的,而不是您当前的组合任务,即找出“正确”的外观并生成正确的输出。谢谢您的回复。我使用pymysql将json插入到文本列中。该值应使用
`写入sql语句:
插入xxx(列)值(“{\'dau\':123}”)`是的,
json.dumps
将字典转换为字符串,您应该能够插入它!

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