python urlencode()处理包含反斜杠‘/’字符串问题

时间:2021-10-15 14:45:47
请看代码:
>>> import urllib
>>> p="/wEPDwUJNjc5"
>>> e=urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
经过urlencode()后,为什么开始的‘/’字符变成了%2F,我的本意是不想有这个变化怎么弄啊?

3 个解决方案

#1


urlencode后的数据是给远程的服务器看的,你为什么要指定它变什么样呢?

如果你要做其他用处,比如只是要把key和value用“=”连起来,就自己写一个函数。

#2


>>> import urllib
>>> p="/wEPDwUJNjc5"
>>> e=urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
  
name = name.replace('%2F' , '/')

#3


引用楼主  的回复:
请看代码:
>>> import urllib
>>> p="/wEPDwUJNjc5"
>>> e=urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
经过urlencode()后,为什么开始的‘/’字符变成了%2F,我的本意是不想有这个变化怎么弄啊?

你要明白你是要干嘛,urlencode就是个wrap函数,把key=value编码为包含百分号的字符串给服务器
需要'/'的时候,你去要另外一个函数,类似的,unquote
看测试
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import urllib
>>> p = '/wEPDwUJNjc5'
>>> e = urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
>>> e
'name=%2FwEPDwUJNjc5'
>>> print urllib.unquote(e)
name=/wEPDwUJNjc5
>>> 


#1


urlencode后的数据是给远程的服务器看的,你为什么要指定它变什么样呢?

如果你要做其他用处,比如只是要把key和value用“=”连起来,就自己写一个函数。

#2


>>> import urllib
>>> p="/wEPDwUJNjc5"
>>> e=urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
  
name = name.replace('%2F' , '/')

#3


引用楼主  的回复:
请看代码:
>>> import urllib
>>> p="/wEPDwUJNjc5"
>>> e=urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
经过urlencode()后,为什么开始的‘/’字符变成了%2F,我的本意是不想有这个变化怎么弄啊?

你要明白你是要干嘛,urlencode就是个wrap函数,把key=value编码为包含百分号的字符串给服务器
需要'/'的时候,你去要另外一个函数,类似的,unquote
看测试
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import urllib
>>> p = '/wEPDwUJNjc5'
>>> e = urllib.urlencode({'name':p})
>>> print e
name=%2FwEPDwUJNjc5
>>> e
'name=%2FwEPDwUJNjc5'
>>> print urllib.unquote(e)
name=/wEPDwUJNjc5
>>>