Python中的替换字符不起作用

25

我正在使用Beautiful Soup编写网络爬虫,并且有以下的代码:

  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等。但它似乎没有生效,这些链接仍然以".."开头。我是否遗漏了什么?

3个回答

64

string.replace() 方法返回替换后的字符串,不会修改原始字符串,因此需要像下面这样使用:

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

15

string.replace() 返回一个替换后的字符串副本,因为在Python中字符串是不可变的。尝试:

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

11

这不是原地替换。你需要执行以下操作:

link['href'] = link['href'].replace('..', '')
请问需要翻译的内容是什么?
a = "abc.."
print a.replace("..","")
'abc'
 print a
'abc..'
a = a.replace("..","")
print a
'abc'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接