2017-01-20 3 views
0

Ive боролся с аббревиатурой некоторых данных, очищенных с помощью bs4.выберите первый символ из каждого слова в списке скребковых данных

Я пытаюсь сокращайте вывод:

import urllib.request 
from bs4 import BeautifulSoup 

url = "http://www.bbc.co.uk/weather/en/2644037/?day1" 
page = urllib.request.urlopen(url) 
soup = BeautifulSoup(page, "html5lib") 
weekWeather = soup.find('div', {'class':'daily-window'}) 
wD = [x.text for x in weekWeather.findAll('span', {'class':'description blq-hide'})] 

Выход представляет собой список ...

['South South Westerly', 'South Westerly', 'Southerly', 'Southerly', 'Southerly'] 

, который я хочу, чтобы сокращайте ['SSW', 'SW', 'S', 'S', 'S']

Мой первый план был для использования split(), а затем выберите все upper(), затем я попытался использовать карту для повторения каждого слова и выбора первого символа, но я только ev er получить первую букву назад каждого элемента (т.е. [S, S, S, S, S]

У меня есть ощущение, что это из-за способа возвращения данных?

Любые указатели были бы замечательными, спасибо.

+0

Возможный дубликат [Как Я нахожу первую букву каждого слова?] (Http://stackoverflow.com/questions/5775719/how-do-i-find-the-first-letter-of-eword-word) –

ответ

0

В простейшей форме, вы можете расщепляется пространства через .split() и получить первый символ каждого слова:

["".join([item[0] for item in x.text.split()]) 
for x in weekWeather.select('span.description.blq-hide')] 

возвращающие бы:

['SSW', 'SW', 'S', 'S', 'S'] 
Смежные вопросы