替换不在python中工作的字符

时间:2011-08-26 18:09:32

标签: 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等形式出现的链接。但是,它无效。链接仍然是领先的“..”我有什么遗漏?

3 个答案:

答案 0 :(得分:44)

string.replace()返回包含替换值的字符串。它不会修改原件,所以做这样的事情:

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

答案 1 :(得分:12)

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

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

答案 2 :(得分:6)

这不是一个现场替代品。你需要这样做:

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

示例:

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