url_base = ("https://maps.googleapis.com/maps/api/place/search/json?"
"location=%s,%s&radius=500&types=food|doctor&sensor=false&"
"key=%s&pagetoken=%s") % (
r['lat'],
r['lng'],
YOUR_API_KEY,
''
)
虽然如上所示格式化,但在SublimeText中没有关于PEP8的下划线,但它看起来很奇怪。我该如何格式化:
a)更好(代码更易读)
b)仍然按照PEP8?
答案 0 :(得分:3)
或许是什么让你看起来很奇怪是很长的字符串被打破以符合PEP8的方式。但是,如果你确实需要分解一个很长的字符串,那么你正在以正确的方式进行。两个并置的字符串由Python自动连接。
但是,在您的特定情况下,您不需要写一个很长的字符串。相反,您可以使用urllib.urlencode为您设置参数格式:
import urllib
url_base = "https://maps.googleapis.com/maps/api/place/search/json?"
params = urllib.urlencode(
{'location': '{},{}'.format(r['lat'], r['lng']),
'radius': 500,
'types': 'food|doctor',
'sensor': 'false',
'key': YOUR_API_KEY,
'pagetoken': ''
})
url = url_base + params
答案 1 :(得分:1)
您可以使用自己选择的text editor对其进行格式化。如果您找到更适合您的格式,您可以做得更好。您可以坚持PEP8来确保符合PEP8。
或直接来自urllib docs:
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> params
'eggs=2&bacon=0&spam=1'
>>> url = 'http://www.musi-cal.com/cgi-bin/query?' + params
>>> url
'http://www.musi-cal.com/cgi-bin/query?eggs=2&bacon=0&spam=1'
答案 2 :(得分:1)
from urlparse import urlunparse
query_params = { "location": "%s,%s" % (r['lat'], r['lng']),
"radius": "500",
"types": "food|doctor",
"sensor": "false",
"key": YOUR_API_KEY,
"pagetoken": ""
}
url_base = (urlunparse(("https", "maps.googleapis.com",
"/maps/api/place/search/json", None,
"&".join("=".join(qp) for qp in query_params.items()),
None)),
)
请记住,PEP8是指导方针和建议,而不是一套严格的规则。