2017-05-23 23 views
2

我正在研究一個python 2.7腳本,這樣給定一個帶有一定數量的鍵 - 值對(不是固定的數字)的URL,就可以在json結構上檢索這個值。如何使用python從URL檢索鍵值對

這是我迄今所做的:

from furl import furl 

url = "https://search/address?size=10&city=Madrid&offer_type=1&query=Gran%20v" 

f = furl(url) 
fields = ['size', 'city', 'offer_type', 'query'] 

l = [] 
l.append(f.args['size']) 
l.append(f.args['city']) 
l.append(f.args['offer_type']) 
l.append(f.args['query']) 

body = { 
     fields[0]: f.args[fields[0]], 
     fields[1]: f.args[fields[1]], 
     fields[2]: f.args[fields[2]], 
     fields[3]: f.args[fields[3]] 
    } 

此代碼的工作,但只是在我知道會有4鍵值對,這些對的名稱的情況。例如,如果我的網址較短或較大,我不知道如何面對問題。

使用此命令length = len(f.args)我能夠獲得對的數量,但不知道如何從f.args對象

非常感謝你, 阿爾瓦羅

+5

'list(f.args)'或'f.args.keys()'?當你調用'list()'的時候,一個類似dict的對象通常返回它的鍵。 –

回答

2

這是你在找什麼?

from furl import furl 

url = "https://search/address?size=10&city=Madrid&offer_type=1&query=Gran%20v" 

f = furl(url) 

print zip(f.args.keys(),f.args.values()) 

輸出:

[('size', '10'), ('city', 'Madrid'), ('offer_type', '1'), ('query', 'Gran v')]

+0

OP特別想要一個字典。 –

+0

Welp,我想不是,有+1 –

4

提取鍵名的想法,我稍微困惑... f.args已經是您想要的類型的字典式對象。如果你想明確地將其轉換爲一個字典,你可以使用:

body = dict(f.args) 

但是,即使這似乎沒有必要。如果需要對象的新副本,以便在不影響原始實例的情況下對其進行更改,則可以調用.copy()方法。

+0

你最需要的是'f.args.copy()'。很好看。 –

1

furl庫不特別有據可查的,但通過源代碼挖表明f.args是最終重定向到orderedmultidict.omdict對象的屬性。這支持所有的標準字典方法,除了許多更有趣的東西(也沒有很好的文檔)。

因此,您只需使用f.args即可,您需要body。如果由於某種原因需要複印件,請執行f.args.copy()或可能的dict(f.args)