Heim  >  Fragen und Antworten  >  Hauptteil

正则表达式 - python re.sub替换不成功

我在学习爬虫的时候想把里面的标签去掉,但是使用re.sub不成功。代码如下:

#!usr/bin/env python3
#coding:utf-8

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re

html = urlopen("http://www.jianshu.com")
bsObj = BeautifulSoup(html,"lxml")
txt = bsObj.findAll("p",{"class":re.compile("abstract")})
for word in txt:
        if '<p class="abstract">' in word:
                newword = re.sub(r'<p class="abstract">','\n',word)
                print(newword)
        else:
                print(word)

请问这是是什么问题,谢谢!

黄舟黄舟2763 Tage vor501

Antworte allen(2)Ich werde antworten

  • 黄舟

    黄舟2017-04-18 10:14:11

    In [19]: type(word)
    Out[19]: bs4.element.Tag

    找到原因了,word不是一个字符串。

    Antwort
    0
  • 黄舟

    黄舟2017-04-18 10:14:11

    字符串对象p并不包含"sub"方法:

    newword = p.sub('\n', word) # -> re.sub(.....)

    写一小段代码给题主参考一下子:

    import re
    word = '<p class="abstract">AAAA<p class="abstract">bbb'
    p = '<p class="abstract">'
    newword = re.sub(p, '\n', word)
    
    '''
    Result:
    In [21]: newword
    Out[21]: '\nAAAA\nbbb'
    
    In [22]: print newword
    
    AAAA
    bbb
    
    In [23]:
    '''

    Antwort
    0
  • StornierenAntwort