Заменить символы, не работающие на 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

Предполагается, что link['href'].replace('..', '') фиксирует ссылки, которые выходят как.. /contact/orderform.aspx,../contact/requestconsult.aspx и т.д. Однако он не работает. Ссылки по-прежнему имеют ведущие ".." Есть ли что-то, чего я не вижу?

Ответ 1

string.replace() возвращает строку с замененными значениями. Он не модифицирует оригинал, поэтому сделайте следующее:

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

Ответ 2

string.replace() возвращает копию строки с замененными символами, поскольку строки в Python являются неизменяемыми. Попробуйте

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

Ответ 3

Это не замена на месте. Вам нужно сделать:

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

Пример:

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