Python 为什么会有一个额外的\&引用;
我处理的是两个变量,一个是度量名称,另一个是数字或字符串。它们并非都包含特殊字符。我想将其转换为JSON格式,并将其插入mysql文本类型列中。预期结果是: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
"{\"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}