Python 更新字典时如何从字符串变量中转义引号
我正在尝试使用新的键值对更新现有词典。但更新词典会在值字段中添加单引号。 此字典用于mongo查询,因此每当我在dictionay.update(key:value)中替换value变量时,需要清除额外的引号 我尝试使用eval和json.loads。但这并不富有成效。有什么建议吗Python 更新字典时如何从字符串变量中转义引号,python,json,dictionary,pymongo,Python,Json,Dictionary,Pymongo,我正在尝试使用新的键值对更新现有词典。但更新词典会在值字段中添加单引号。 此字典用于mongo查询,因此每当我在dictionay.update(key:value)中替换value变量时,需要清除额外的引号 我尝试使用eval和json.loads。但这并不富有成效。有什么建议吗 mquery ={"type" : "search"} skey = "ZXCV,YBC" skey = '{"$in": [/' + skey.replace(',','/,/') + '/]}' print
mquery ={"type" : "search"}
skey = "ZXCV,YBC"
skey = '{"$in": [/' + skey.replace(',','/,/') + '/]}'
print(skey)
if skey is not None : mquery.update({"skey1" : skey})
print(mquery)
应为-{'type':'search','skey1':{“$in”:[/ZXCV/,/YBC/]}}
当前-{'type':'search','skey1':'{$in:[/ZXCV/,/YBC/]}}
导入re
db.qu1.find({'type':'search','skey1':{'$in':[re.compile('.ZXCV.|.YBC.')]}
这就是RE的答案。事实上,expect output在这部分中是无效的dict
[/ZXCV/,/YBC/]
如果您希望值是dict
,那么您首先为什么要将skey
设为字符串?您期望的dict甚至是无效的:您想要'[/ZXCV/,/YBC/]'
还是[/ZXCV/,/YBC/']
相反?此打印输出中的单引号“{“$in”:[/ZXCV/,/YBC/]}”不是字符串的一部分。它们是python在字典中显示字符串时显示的内容的一部分。如果要执行打印(mquery['skey1'])
则显示的值将是{“$in”:[/ZXCV,/YBC/}
。如果将此值传递给mongo查询,它将不会有引号。引号只是为了使显示更易于阅读。这用于查询MongoDB**db.qu1.find({'type':'search','skey1':{“$in”:[/ZXCV/,/YBC/]}**,但带有我获得的输出(带附加引号)查询无法运行。您将对象的表示形式与其值混淆。大多数python容器(包括字典)将显示表示形式(也称为repr)它包含的对象。字符串用引号表示。但这里是导入部分!这些引号不是字符串值的一部分。为了证明这一点,请尝试print(mquery['skey1'][0])
,您会发现输出是{
而不是”
,如果引号是字符串的一部分,则会出现这种情况。