将字符串化列表中的内单引号改为双引号,外双引号改为单引号



我有一个字典列表,它正在用来自另一个列表的数据动态填充。然后,这个字典列表被用作请求中的主体参数。字典列表必须是字符串,请求才能成功。

问题是,当我动态填充字典列表str(list_of_dicts)时,它在字符串对象周围加上双引号,并在其中的所有内容周围加上单引号。我需要它正好相反,用双引号包装字符串和单引号在所有里面。

我尝试过替换,str, repr, join和json。转储到目前为止还没有用。

def insert_header(self, request):
pid = request.meta['pid']
pa = request.meta['pa']
url = request.url
pid = [x.split('ern:product::')[-1] for x in pid]
body = [
{"id":"1234567","variables":{"id":"ern:product::pid"}},
{"id":"1234567","variables":{"id":"ern:product::pid"}},
{"id":"1234567","variables":{"id":"ern:product::pid"}}
]

if len(pid) == len(body):
for counter, i in enumerate(body):
i["variables"] = {"id":"ern:product::" + pid[counter]}
body = str(body)
body.replace("'", '"')

return Request(url, method='POST', meta=request.meta, body=body, callback=self.check_header, **self.parse_page_kwargs)

真正令人沮丧的是,在python shell中,我可以复制失败的字典列表(引号错误的列表)并执行:list_of_dicts.replace("'", '"'),它返回的正是我需要的,当我运行代码时,它只是没有像那样改变。谢谢你的建议。

我认为你应该去掉body = body[1:-1]这一行。

str(body)在开头和结尾没有引号。因此,您正在删除部分实际数据。

您也可以使用body = json.dumps(body),无需进一步更换。

print(body)查看str的实际含量。它应该看起来像:

[{"id": "1234567", "variables": {"id": "ern:product::pid"}}, {"id": "1234567", "variables": {"id": "ern:product::pid"}}, {"id": "1234567", "variables": {"id": "ern:product::pid"}}]

最新更新