python 正则表达式 re findall 返回能匹配的字符串
生活随笔
收集整理的這篇文章主要介紹了
python 正则表达式 re findall 返回能匹配的字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python 正則表達式 re findall 方法能夠以列表的形式返回能匹配的子串。
re.findall(pattern, string[, flags]):
搜索string,以列表形式返回全部能匹配的子串。先看個簡單的代碼:
import re
?
p = re.compile(r'\d+')
print p.findall('one1two2three3four4')
?
### output ###
# ['1', '2', '3', '4']
稍微復雜點比如:
info = '<a href="http://www.baidu.com">baidu</a>' 我們的需求是通過正則表達式提取網址和錨文本,那可以用到
findall()
relink?=?'<a href="(.*)">(.*)</a>'
info?=?'<a href="http://www.baidu.com">baidu</a>'
cinfo?=?re.findall(relink,info)
print?cinfo
輸出的結果:[('http://www.baidu.com', 'baidu')] 返回的是一個列表,列表里面是匹配的結果形成的元組形式。如果你需要用正則替換的話,可以看下python re sub
?
?
以下是一個網站地圖爬蟲 ,其中用到了re.findall 語法
import urllib2import re
def download(url,user_agent='wswp', num_retries=2):
print 'downloading:',url
headers={'User-agent':user_agent}
request=urllib2.Request(url,headers=headers)
try:
html=urllib2.urlopen(url).read()
except urllib2.URLError as e:
print 'download error:', e.reason
html=None
if num_retries>0:
if hasattr(e, 'code') and 500<=e.code<600:
#recursively retry 5XX http errors
return download(url, user_agent,num_retries-1)
return html
def crawl_sitemap(url):
#download the sitemap file
sitemap=download(url)
#extract the sitemap links
links = re.findall('<loc>(.*?)</loc>',sitemap)
#download each link
for link in links:
html=download(link)
?
轉載于:https://www.cnblogs.com/mrruning/p/7637463.html
總結
以上是生活随笔為你收集整理的python 正则表达式 re findall 返回能匹配的字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英雄联盟云顶之弈赌刺什么意思 英雄资料列
- 下一篇: VIM常用插件