我尝试访问其中一个参数中包含\
名称(Axwell /\ Ingrosso
)的API。
如果我直接使用网站API面板访问API,我会使用Axwell /\\ Ingrosso
获得结果。
请求网址变为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请求中没有反斜杠的情况下使用它,但即使这样也会输出一个空响应。我在这里缺少什么?
答案 0 :(得分:2)
你需要加倍反斜杠:
'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
或requests
生成的编码网址:
>>> 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'