Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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_Python Requests - Fatal编程技术网

在Python请求中转义反斜杠

在Python请求中转义反斜杠,python,python-requests,Python,Python Requests,我试图访问一个API,其中一个参数的名称中有一个\(Axwell/\Ingrosso) 如果我直接使用网站API面板访问API,我将使用Axwell/\\Ingrosso获得结果 然后请求URL变为https://oauth-api.beatport.com/catalog/3/tracks?facets=artistName%3AAxwell+%2F%5C%5C+Ingrosso&perPage=150 如果我尝试使用Python请求访问相同的API端点,则会得到一个空响应 这就是我正在尝试的

我试图访问一个API,其中一个参数的名称中有一个
\
Axwell/\Ingrosso

如果我直接使用网站API面板访问API,我将使用
Axwell/\\Ingrosso
获得结果

然后请求URL变为
https://oauth-api.beatport.com/catalog/3/tracks?facets=artistName%3AAxwell+%2F%5C%5C+Ingrosso&perPage=150

如果我尝试使用Python请求访问相同的API端点,则会得到一个空响应

这就是我正在尝试的

r = session.get('https://oauth-api.beatport.com/catalog/3/tracks', 
               params={'facets': 'artistName:Axwell /\\ Ingrosso', 
                       'perPage': 150})
我还尝试在Python请求中不使用反斜杠来使用它,但即使这样也会输出一个空响应。我在这里遗漏了什么?

您需要将反斜杠加倍:

'artistName:Axwell /\\\\ Ingrosso'
或者使用原始字符串文字,在字符串文字前加上
r

r'artistName:Axwell /\\ Ingrosso'
在Python字符串文本中,反斜杠开始转义序列,
\\
表示转义序列,例如,没有特定含义的常规反斜杠字符:

>>> print 'artistName:Axwell /\\ Ingrosso'
artistName:Axwell /\ Ingrosso
>>> print 'artistName:Axwell /\\\\ Ingrosso'
artistName:Axwell /\\ Ingrosso
>>> print r'artistName:Axwell /\\ Ingrosso'
artistName:Axwell /\\ Ingrosso
或作为
请求生成的编码URL

>>> import requests
>>> requests.Request('GET',
...     'https://oauth-api.beatport.com/catalog/3/tracks',
...     params={'facets': 'artistName:Axwell /\\ Ingrosso',
...             'perPage': 150}).prepare().url
'https://oauth-api.beatport.com/catalog/3/tracks?facets=artistName%3AAxwell+%2F%5C+Ingrosso&perPage=150'
>>> requests.Request('GET',
...     'https://oauth-api.beatport.com/catalog/3/tracks',
...     params={'facets': 'artistName:Axwell /\\\\ Ingrosso',
...             'perPage': 150}).prepare().url
'https://oauth-api.beatport.com/catalog/3/tracks?facets=artistName%3AAxwell+%2F%5C%5C+Ingrosso&perPage=150'
>>> requests.Request('GET',
...     'https://oauth-api.beatport.com/catalog/3/tracks',
...     params={'facets': r'artistName:Axwell /\\ Ingrosso',
...             'perPage': 150}).prepare().url
'https://oauth-api.beatport.com/catalog/3/tracks?facets=artistName%3AAxwell+%2F%5C%5C+Ingrosso&perPage=150'

谢谢你的详细解释。但出于某种奇怪的原因,相同的代码适用于我的本地机器,但不适用于我的服务器机器。有什么线索吗?@YinYang:在这里定义“不起作用”。API响应告诉您什么是错误的?它仍然在服务器上输出空响应。虽然我在本地计算机上收到了对相同代码的响应。@阴阳:如果您在两台计算机上运行完全相同的请求(相同的标题、相同的查询参数等),那么您可能需要联系Beatport。请确保您100%确定发送了相同的请求。您可以使用记录每个请求的一些详细信息(实际上是URL路径),以便进行比较。