Skip to main content
 首页 » 编程设计

python之如何在谷歌应用引擎中编码我的 url 参数

2025年05月04日15powertoolsteam

我使用 python 进行地理编码,我认为我需要使用 urllencode 对变量 region 进行编码,以便它可以处理具有空格和其他特殊字符的内容:

url = urllib.urlencode('http://maps.googleapis.com/maps/api/geocode/json?address='+region+'&sensor=false') 
logging.info('url:'+url) 
result = urlfetch.fetch(url) 

当变量区域包含空格时生成错误日志

Traceback (most recent call last): 
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch 
    return method(*args, **kwargs) 
  File "/base/data/home/apps/s~montaoproject/pricehandling.355268396595012751/in.py", line 153, in get 
    url = urllib.urlencode('http://maps.googleapis.com/maps/api/geocode/json?address='+region+'&sensor=false') 
  File "/base/python27_runtime/python27_dist/lib/python2.7/urllib.py", line 1275, in urlencode 
    raise TypeError 
TypeError: not a valid non-string sequence or mapping object 

背景是另一个问题,我问过我在哪里遇到的问题,我很想知道代码是否有效,但不适用于包含两个或更多单词的区域,即带有空格的名称。

https://stackoverflow.com/questions/8441063/how-should-i-use-urlfetch-here

在生产中我使用了另一个变量。我认为它有空格并不重要。当我尝试不包含空格的变量时,它起作用了。 那么您能告诉我应该如何对 url 变量进行编码以允许空格和其他“特殊”字符吗?

谢谢

请您参考如下方法:

只需编码您的查询字符串部分

喜欢:

param = {"address" : region, 
        "sensor" : "false" 
        } 

或

param = [("address", region), ("sensor", "false")] 

然后

encoded_param = urllib.urlencode(param) 
url = 'http://maps.googleapis.com/maps/api/geocode/json' 
url = url + '?' + encoded_param 
result = urlfetch.fetch(url)