替换不在python中工作的字符

sdi*_*ner 15 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
Run Code Online (Sandbox Code Playgroud)

link['href'].replace('..', '')应该修复出来的../contact/orderform.aspx,../contact/requestconsult.aspx,等等.但是,它不工作的链接.链接仍然是领先的".."有什么我想念的吗?

joe*_*ick 46

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

link['href'] = link['href'].replace("..", "")
Run Code Online (Sandbox Code Playgroud)


jan*_*gan 12

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

s = link['href'].replace("..", '')
url=urljoin(page, s)
Run Code Online (Sandbox Code Playgroud)


Urj*_*jit 6

它不是就地替换。您需要做:

link['href'] = link['href'].replace('..', '')
Run Code Online (Sandbox Code Playgroud)

例:

a = "abc.."
print a.replace("..","")
'abc'
 print a
'abc..'
a = a.replace("..","")
print a
'abc'
Run Code Online (Sandbox Code Playgroud)