2016-04-12 20 views
0

URL, a ve b değerlerini yakalayıp, ekleme işlevine iletmeyi nasıl başarabilirim? Sonuç şu şekilde olmalıdır: {"c": x}, burada x a ve b toplamıdır.URL sorgu dizelerini eklenecek bir işleve geçirme

kodu:

op = 'add' 
a = random.randint(0,10) 
b = random.randint(0,10) 
/%s?a=%s&b=%s' % (op, a, b) 

result = res.json() 

if op=='add': 
    assert a+b == result['c'] 

fonksiyonu:

def add(): 
    import json 
    return json.dumps({'c': ???}) 
+0

[Python'da URL ayrıştırma - çift eğik çizgi yollarında normalleştirme] 'nin olası yinelenmesi (http://stackoverflow.com/questions/8925938/url-parsing-in-python-normalizing-double-slash-in-paths) – Serdmanczyk

+0

@Serdmanczyk, kullanıcı 'urlparse' hakkında bile bilmiyor bile, görünüşe göre ... – icedwater

+1

Üzgünüm, iyi bir yinelenen cevap bulmak için çalışıyordu ve yanlışlıkla yanlış bir isabetli girmeye çalışıyordu. Bayrakları geri almanın bir yolu var mı? Aşağıdaki cevap anlamlıdır. – Serdmanczyk

cevap

1

Kullanım urlparse, Bunlar gibi görevler için tasarlanmış standart bir kütüphane modülü!

urlparse.parse_qs ([] strict_parsing, keep_blank_values ​​[] qs)

(tip veri uygulama/x-www-form-urlencoded) bir dize parametre olarak verilen bir sorgu dizesi ayrıştırma . Veriler sözlük olarak döndürülür. Sözlük anahtarları, benzersiz sorgu değişken adlarıdır ve değerleri, her ad için değer listeleridir.

İsteğe bağlı argüman keep_blank_values, yüzde kodlu sorgulardaki boş değerlerin boş dizeleri olarak işlem görüp görmeyeceğini gösteren bir işarettir. Gerçek değer, boşlukların boş dizeler olarak saklanması gerektiğini belirtir. Varsayılan yanlış değer, boş değerlerin göz ardı edilmesine ve dahil edilmemiş gibi işlendiğine işaret eder.

İsteğe bağlı argüman strict_parsing, ayrıştırma hatalarıyla yapmasını belirten bir işarettir. Eğer false (varsayılan), hatalar sessizce göz ardı edilir. Doğruysa, hatalar bir ValueError istisnası oluşturur.

Örnek: siz de urlparse diğer işlevleri kullanarak (bir sorgu dizesi dahil) bileşenleri içine bütün bir URL ayrıştırabilir

>>> urlparse.parse_qs('a=1&b=1') # raw query string 
{'a': ['1'], 'b': ['1']} 

Not.

+0

Bunun nasıl kullanılabileceği hakkında bir örnek var mı? Bunun bir tür "benim için ödevimi yap" gibi bir soru olduğunu hissederseniz, bunu belirtmekten çekinmeyin, ancak cevaplama da doğru şekilde yapılmalıdır. – icedwater

+1

@icedwater Yorum yaptıkça doğru bir örnek ekleme sürecindeydim. :) –

+0

Teşekkürler! Bunun cevabını açık bir şekilde vermeden iyi bir ipucu olduğunu düşünüyorum. – icedwater

0
from urlparse import parse_qs, urlparse 
import json 

def add(a, b): 
    return json.dumps({'c': a+b}) 

url = 'add?a=1&b=1' 

q_dict = parse_qs(urlparse(url).query, keep_blank_values=True) 
# q_dict = {'a': ['1'], 'b': ['1']} 

print add(a=q_dict['a'][0], b=q_dict['b'][0]) 
0

Sorunumu nasıl çözeceğimi anladım! Tüm yardımı takdir ediyorum, ancak burada verilen çözümlerin hiçbiri soruma uygulanmadı. Bu tamamen benim hatamdı çünkü soruyu tamamen farklı bir şekilde ifade ettim.

İlgili konular