2011-08-26 9 views
7

Sto usando bella zuppa e sto scrivendo un cingolato e hanno il seguente codice in esso:sostituire i caratteri non funziona in python

print soup.originalEncoding 
       #self.addtoindex(page, soup) 


       links=soup('a') 
      for link in links: 

       if('href' in dict(link.attrs)):     
        link['href'].replace('..', '') 
        url=urljoin(page, link['href']) 
        if url.find("'") != -1: 
         continue 
        url = url.split('?')[0] 
        url = url.split('#')[0] 
        if url[0:4] == 'http': 
         newpages.add(url) 
     pages = newpages 

Il link['href'].replace('..', '') è supposto per correggere i collegamenti che vengono fuori come ../contact /orderform.aspx, ../contact/requestconsult.aspx, ecc. Tuttavia, non funziona. I link hanno ancora il principale ".." C'è qualcosa che mi manca?

risposta

31

string.replace() restituisce la stringa con i valori sostituiti. Non modifica l'originale in modo da fare qualcosa di simile:

link['href'] = link['href'].replace("..", "") 
2

Non è un sostituto inplace. Hai bisogno di fare:

link['href'] = link['href'].replace('..', '') 

Esempio:

a = "abc.." 
print a.replace("..","") 
'abc' 
print a 
'abc..' 
a = a.replace("..","") 
print a 
'abc' 
8

string.replace() restituisce una copia della stringa con i caratteri sostituiti, come stringhe in Python sono immutabili. Prova

s = link['href'].replace("..", '') 
url=urljoin(page, s) 
Problemi correlati