Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Json_Dictionary_Pymongo - Fatal编程技术网

Python 更新字典时如何从字符串变量中转义引号

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

我正在尝试使用新的键值对更新现有词典。但更新词典会在值字段中添加单引号。 此字典用于mongo查询,因此每当我在dictionay.update(key:value)中替换value变量时,需要清除额外的引号

我尝试使用eval和json.loads。但这并不富有成效。有什么建议吗

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])
,您会发现输出是
{
而不是
,如果引号是字符串的一部分,则会出现这种情况。