2017-03-12 63 views
0
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/10/519650091/Python Reg模式URL选择/过滤器

由于某些原因,只是不能得到它的权利,总是有它的脸谱,推特和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

下一页请格式化您的问题,并确保发布的代码中没有错别字(我在'links ='中更正了) – janos

回答

1

您有几个问题在这里:

  1. 模式^(/[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9]{9})$需要字符串开始/[0-9]{4}/,但您的所有字符串与http开始。
  2. 条件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)