Python代码在Py2.7中运行没有问题,但在3.6.4中没有问题

2024-10-01 00:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行以下代码:

Headers=requests.get('https://coinmarketcap.com').headers
CookieDough=Headers['Set-Cookie']
Headers="""\"{
":authority":"coinmarketcap.com",
":method":"POST",
":path":"/login",
":scheme":"https",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"accept-encoding":"gzip, deflate, br",
"accept-language":"en-US,en;q=0.9",
"cache-control":"max-age=0",
"content-length":"743",
"content-type":"application/x-www-form-urlencoded",
"cookie":\""""+CookieDough+"""\",
"origin":"https://coinmarketcap.com",
"referer":"https://coinmarketcap.com",
"upgrade-insecure-requests":"1",
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
}\""""

print(json.loads(Headers, strict=False))

在过去的一个线程中,有人在python2.7上运行了这段代码,并且它成功地运行了,但是当我在python3.6.4上运行它时,它没有运行。它给了我以下错误:

json.decoder.JSONDecodeError: Extra data: line 2 column 2 (char 4)

我正在Sublime Text 3 Builder上运行Python3.6.4。你知道吗

谢谢


Tags: 代码httpsimagecomjsongetapplicationxml
2条回答

标题应该是问题所在 "{ ":authority":"coinmarketcap.com", ":method":"POST", ":path":"/login", ":scheme":"https", "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "accept-encoding":"gzip, deflate, br", "accept-language":"en-US,en;q=0.9", "cache-control":"max-age=0", "content-length":"743", "content-type":"application/x-www-form-urlencoded", "cookie":"stuff", "origin":"https://coinmarketcap.com", "referer":"https://coinmarketcap.com", "upgrade-insecure-requests":"1", "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" }"

如前所述,您的示例是不完整的,因此很难确定,但不管怎样,您确定它在Python2.7中工作,因为在Python2.7或3.6版本中,如果没有修改,它就不适用于我。你知道吗

具体来说,这是一个问题:

Headers="""\"{
}\""""

字符串中的第一个和最后一个字符是\",这是一个常规的双引号字符。这意味着Headers的值如下所示:

"{
":authority":"coinmarketcap.com",
":method":"POST",
":path":"/login",
":scheme":"https",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"accept-encoding":"gzip, deflate, br",
"accept-language":"en-US,en;q=0.9",
"cache-control":"max-age=0",
"content-length":"743",
"content-type":"application/x-www-form-urlencoded",
"cookie":"stuff",
"origin":"https://coinmarketcap.com",
"referer":"https://coinmarketcap.com",
"upgrade-insecure-requests":"1",
"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
}"

这不是有效的JSON;它是一个嵌入了换行符的字符串。可能您想从开头和结尾删除有问题的\"。你知道吗

如果目的是让它成为一个看起来像包含字典的字符串,那么根据定义,它已经是这样了,您不需要使用json模块将它解码为字符串。你知道吗

如果打算让它成为一个字典,那么删除这些字符会使它再次有效(假设CookieDough中的内容是一个有效的JSON字符串)。你知道吗

相关问题 更多 >