links = [
'http://www.npr.org/sections/thesalt/2017/03/10/519650091/falling-stars-negative-yelp-reviews-target-trump-restaurants-hotels',
'https://ondemand.npr.org/anon.npr-mp3/npr/wesat/2017/03/20170311_wesat_south_korea_wrap.mp3?orgId=1&topicId=1125&d=195&p=7&story=519807707&t=progseg&e=519805215&seg=12&siteplayer=true&dl=1',
'https://www.facebook.com/NPR',
'https://www.twitter.com/NPR']
目标:获取包含(/ yyyy / mm / dd / ddddddddd /)格式的链接。例如/ 2017/03 /519650091分之10/
由于某些原因无法做到正确,总是有facebook,twitter和2017/03/20170311格式的链接。
sel_links = []
def selectedLinks(links):
r = re.compile("^(/[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]{9})$")
for link in links:
if r.search(link)!="None":
sel_links.append(link)
return set(sel_links)
selectedLinks(links)
答案 0 :(得分:1)
这里有几个问题:
^(/[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]{9})$
要求字符串以/[0-9]{4}/
开头,但所有字符串都以http
开头。r.search(link)!="None"
永远不会成立,因为re.search
会返回None
或匹配对象,因此与字符串"None"
进行比较是不合适的看来你正在寻找这个:
def selectedLinks(links):
r = re.compile(r"/[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]{9}")
for link in links:
if r.search(link):
sel_links.append(link)
return set(sel_links)