2012-11-14 58 views
2

我是Python的新手,似乎遇到了問題。我試圖來urlencode用戶代理字符串...正確地對用戶代理進行網址編碼

import urllib 

UserAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3 Gecko/2008092417 Firefox/3.0.3' 
print 'Agent: ' + UserAgent 
print urllib.urlencode(UserAgent) 

導致...

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3 Gecko/2008092417 Firefox/3.0.3 
Traceback (most recent call last): 
    File "D:\Source\SomePath\test.py", line 7, in <module> 
    print urllib.urlencode(UserAgent) 
    File "C:\Python26\lib\urllib.py", line 1254, in urlencode 
    raise TypeError 
TypeError: not a valid non-string sequence or mapping object 
Press any key to continue . . . 

我只能假設,雖然UserAgent被正確打印,我要麼錯過了關於urllib.urlencode()的一些字符串轉義選項或根本性錯誤?

回答

6

urllib.urlencode需要映射或序列,每個映射或序列有兩個項目。如可以在docs

可以看到在你的代碼,你需要做到以下幾點:

urllib.urlencode({'Agent': UserAgent}) 
+0

該死的,我知道它一定是簡單的。謝謝 – Basic

2

Wessie打我給它。爲了將來的參考,你也可以這樣做:

>>> help(urllib.urlencode) 
Help on function urlencode in module urllib: 

urlencode(query, doseq=0) 
    Encode a sequence of two-element tuples or dictionary into a URL query string. 

    If any values in the query arg are sequences and doseq is true, each 
    sequence element is converted to a separate parameter. 

    If the query arg is a sequence of two-element tuples, the order of the 
    parameters in the output will match the order of parameters in the 
    input. 
+0

+1非常方便的提示,謝謝 – Basic

+0

NP。另外,如果您還不知道它,請查看dir(urllib)和dir(urllib.urlencode)。 dir()使未知的未知物知道; help()使已知的未知數。 – verbsintransit

+0

我沒有再次感謝。我熟悉很多其他語言,但需要在Python中爲我的新xbmc媒體中心一起扔東西 - 所以我總共有大約3小時的經驗:)我已經設法讓一些東西已經工作 - 這是一個非常強大和簡潔的語言 – Basic

相關問題