1. 替换模式sub
s ='< I love programming !> < you love python ! >'
re.sub(r'< (I.*?)>','Marry love python',s)
# 返回结果: 'Marry love python < you love python ! >'
发现此时< I love programming !>整个都被替换了,而我们的本意是只替换
“I love programming !”此时可以借助前向否定断言和后向否定断言。
(?<=) | (?=) |
---|---|
前向肯定断言。例如:(?<=love)python 只匹配前边紧跟着“”的“love”的python | 后向肯定断言,与前向一样,只是方向相反 |
re.sub(r'(?<=< )(I.*?)(?=>)','Marry love python',s)
# 返回结果:'< Marry love python> < you love python ! >'
#(?<=< )前向肯定断言限定,不改变‘<’,只是将其作为限定条件。
#(?=>)后向肯定断言,不改变‘>’,只是将其作为限定条件
#(I.*?)替换对象
2. 爬取网页换行符的处理
- 由于(.)表示匹配除了换行字符外的所有字符,因此对于爬取网页中换行符的需要以下处理。
#使用sub,将c字符串中所有的换行符替换成空格,再使用正则表达式
s = re.sub(r'\n',' ',c)