2013-08-21 81 views
0

我将介绍一下我制作的代码的一些小窍门。那就是:任何特定的方式来剥离特定文本中的多个单词?

url = urlopen("http://sports.yahoo.com/nhl/scoreboard?d=2013-01-19") 
content = url.read() 
soup = BeautifulSoup(content) 

def yahooscores(): 
    for table in soup.find_all('table', class_='player-title'): 
     for row in table.find_all('tr'): 
      date = None 
      for cell in row.find_all('td', class_='yspsctnhdln'): 
       for text in cell: 
        date = cell.text 
      if date is not None: 
       print ('%s' % (date) + ", 2013:") 

我试图去从网站的日期部分剥离话“成绩&时间表”,但我不能以某种方式与.split()和.strip做到这一点( ) 方法。

因此,让我解释一下我想做什么,以上面的网站为例。

到目前为止,这是什么出来约会:

Scores & Schedule: Jan 19, 2013: 

我只是想这一点:

Jan 19, 2013: 

有没有什么特别的,我需要,以便除去那些3知道话?

回答

1

cell.text的实际内容是:

'\nScores & Schedule: Jan 19\n' 

...所以它更有意义,让你需要离开那个(最后两个词)什么第一,并然后添加', 2013:'它,因为我认为你已经在尝试去做。的split()一个方便的特点是,它会自动去除前后的空格,所以可能是最可靠的方法来得到你想要的是你的最后一行更改为:

   print(' '.join(date.split()[-2:]) + ', 2013:') 

这种分裂date成词的使用列表.split(),然后使用[-2:]获取列表中的最后两个单词,然后使用' '.join(...)将它们连接在一起,最后在打印结果之前将', 2013:'添加到最后。

请注意,原始版本中的'%s' % (date)完全没有任何功能:您所做的只是将自己替换为date。您可能需要熟悉the documentation on percent-formatting,以便了解原因。

+0

是的,这是最好的答案。我注意到日期在“2013年:”的印刷版之间有一个空格,并且将它们结合在一起。我对日期的%%表示歉意。我发布后,我意识到它没有任何目的。 –

0

只需用空字符串替换不需要的部分即可。

>>> "Scores & Schedule: Jan 19, 2013:".replace("Scores & Schedule:", "") 
' Jan 19, 2013:' 
+1

请解释为什么你的答案是有效的,而不是只给它。这样对于有类似问题的其他人会更有用。 – ArtB

0

保持简单:

>>> s = "Scores & Schedule: Jan 19, 2013:" 
>>> s.replace("Scores & Schedule:", "") 
' Jan 19, 2013:' 
0
date = "Scores & Schedule: Jan 19, 2013:" 

有很多选择:

date = date[19:] 

date = date.replace("Scores & Schedule: ", "") 

date = date.split(":")[1].strip()+":" 

仅举几例。

0

如何:

print(date[20:].strip('\n') + ', 2013')

这是假设总是会有成绩排名&时间表:“在响应中。

相关问题