2010-09-26 14 views
6

Bir URL'yi 'temizlemek' için bir şeyler yazıyorum. Bu durumda, tek yapmaya çalıştığım tek şey, urlopen numaralı telefon numarası olmadan bir sahte şema döndürmektir. Ancak, bunu www.python.org ile test edersem http:///www.python.org döndürür. Herkes bunun nedenini biliyor mu, yoksa bu olmadan onu geri döndürmenin bir yolu var mı?Bir URL'yi urlunparse ile birleştirmek

def FixScheme(website): 

    from urlparse import urlparse, urlunparse 

    scheme, netloc, path, params, query, fragment = urlparse(website) 

    if scheme == '': 
     return urlunparse(('http', netloc, path, params, query, fragment)) 
    else: 
     return website 

cevap

8

Sorun olduğunu çok eksik URL www.python.org, Verdiğiniz dize aslında bir boş olan netloc (ağ konumu) ile, URL path bileşeni olarak alınır yanı sıra düzenini ayrıştırılmasında . Şeması varsayılan olarak scheme parametresini urlparse (mantığınızı basitleştirerek) geçirebilirsiniz, ancak bu "boş netloc" sorununa yardımcı olmaz. Yani için durumunun, örn.

if not netloc: 
    netloc, path = path, '' 
+0

Bu, mükemmel bir anlam ifade eder; netloc'un boş bir dize olarak var olduğunu ve ekstraı/varlığın orada olması gerektiğini varsayar. Çözümünüz işe yarıyor! Hızlı yanıt için teşekkürler. – Ben

+0

@Ben, rica ederim! –

+0

@Ben, kabul edildi olarak işaretlemek için bu cevabın solundaki onay işaretini tıklamanız gerekir =) – katrielalex

0

urlparse Bir tarayıcı bir href özelliğindeki bu dizeyi karşılaştı olsaydı, tıpkı "www.python.org" değil ana makine adı (netloc) olarak yorumlamak, ancak yol olarak da ondan. Sonra urlunparse özel olarak "http" şemasını yorumluyor gibi görünüyor. Şema olarak "x" koyarsanız, "x: www.python.org" yazarsınız.

Hangi girdilerle uğraştığınızı bilmiyorum, ancak urlparse ve urlunparse istemediğinize benziyor.

İlgili konular