2015-09-17 6 views
0
url = 'http://www.millercenter.org/president/speeches' 

conn = urllib2.urlopen(url) 
html = conn.read() 

miller_center_soup = BeautifulSoup(html) 
links = miller_center_soup.find_all('a') 

linklist = [tag.get('href') for tag in links if tag.get('href') is not None] 
linklist = str(linklist) 

end_of_links = [line for line in linklist if '/events/' in line] 
print end_of_links 

Это крошечный фрагмент моего вывода (сохраненный в списке Python).Удалить элементы из списка не в 'речах'?

['/events/2015/one-nation-under-god-how-corporate-america-invented-christian-america', 
'/events/2015/a-conversation-with-bernie-sanders', '#reagan', '#gwbush', '#obama', 
'#top', '/president/obama/speeches/speech-4427', president/obama/speeches/speech-4430', ...] 

Я хочу, чтобы удалить все элементы в списке, которые не содержат speeches. Я пробовал filter() и просто создал другое понимание списка, но это еще не сработало. Я не знаю, почему переменная end_of_links не работает - по крайней мере, мне кажется интуитивным.

+0

при создании другого списка подходит вам: '[el for el in l if' speeches 'not in el]' – Pynchia

+0

Больше apropros, вы имеете в виду 'line for line в linklist if 'speeches' not in linklist'? Это все еще дает мне пустой список, после того. – blacksite

+0

'l' - ваш список входных данных, из которого вам нужно удалить элементы, содержащие« речей ». Я понятия не имею, в каком списке вы хотите работать, поскольку я не вижу «речей» в вашей попытке кода. – Pynchia

ответ

1

Li = [ '/ События/2015/«одна-нация-под-богом-как-корпорация-америка-придумана-христианская америка», '/ events/2015/a-talk-with-bernie-sanders', '#reagan', '#gwbush', ' #obama ', ' #top ','/president/obama/speeches/speech-4427 ',' president/obama/speecheches/речь-4430 ']

импорт повторно

Li = [х для х литиево если re.search (' речи, х)]

печати (л)

[ '/ президент/Обама/речи/речи-4427 ']

0

Kust держать те, которые делают включают 'речи':

link_list = ['/events/2015/one-nation-under-god-how-corporate-america-invented-christian-america', 
'/events/2015/a-conversation-with-bernie-sanders', '#reagan', '#gwbush', '#obama', 
'#top', '/president/obama/speeches/speech-4427', 'president/obama/speeches/speech-4430'] 
speech_list = [_ for _ in link_list if 'speeches' in _] 

Вот мой терминал сессии в python2.7

>>> link_list = ['/events/2015/one-nation-under-god-how-corporate-america-invented-christian-america', 
... '/events/2015/a-conversation-with-bernie-sanders', '#reagan', '#gwbush', '#obama', 
... '#top', '/president/obama/speeches/speech-4427', 'president/obama/speeches/speech-4430'] 
>>> speech_list = [_ for _ in link_list if 'speeches' in _] 
>>> speech_list 
['/president/obama/speeches/speech-4427', 'president/obama/speeches/speech-4430'] 
>>> 
+0

Я просто получаю эту распечатку, когда я запускаю ее: '[]'. Должен ли я сохранять 'linklist' как' str'? – blacksite

+0

Вы печатали речевой список? Здесь хранятся элементы. – Prune

+0

Да. Когда я запускаю весь этот код выше, а затем запустил 'speech_list = [_ для _ в списке ссылок, если 'speeches' в _] print speech_list', я получаю' [] ' – blacksite

Смежные вопросы