2013-08-21 28 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')

這是假設總是會有成績排名&時間表:「在響應中。

相關問題