Не знаю, как использовать «если в» в списке - PullRequest
0 голосов
/ 02 февраля 2020

Я делаю «проект« чувствую себя счастливым »» из «Автоматизирую скучные вещи с помощью python», и мне нужно открыть 5 новых вкладок в браузере в зависимости от того, что вы ищете в Google. С помощью bs4 мне удалось получить все ссылки, связанные с поиском, в списке под названием «ссылки», который выглядел так:

list

, и я заметил, что раньше '#' - это ссылка, которая мне действительно нужна, поэтому я попробовал

for i in links:
if '#' in i:
    print(links.index(i))

, и я получил бы индекс '#' - 1, чтобы я мог получить ссылку. Но когда я запускаю код, он просто печатает 1, 1, 1, 1, 1, 1, 1. Что является индексом первого «#», и мой l oop застрял там. Может кто-нибудь объяснить мне, почему?

Спасибо!

1 Ответ

1 голос
/ 02 февраля 2020

Что является индексом первого '#'

Это должен быть индекс первого 'i' на основе вашего (исходного) кода

This проверяет, содержит ли ссылка string # как символ , что косвенно обеспечивает ее в списке, я думаю ... Но, скорее всего, не то, что вы хотите

for i in links:
   if '#' in i:

Если вы просто хотите один результат , удалите l oop и используйте правильный символ

idx = links.index('#')
if idx >= 0:
    print(idx, links[idx])
else:
    print('not found') 

'#' in links просто вернет true или false, он не скажет вам где это

Если вы хотите все совпадения, это было бы так (хотя это просто список #, который кажется бессмысленным)

[x for x in links if x == '#']

Если вы хотите все ссылки до # , вы можете получить ссылки напрямую или добавить в индекс

res = [] 
for i in range(1,len(links)):  # start one ahead because we're subtracting later 
    if links[i] == '#':
        res.append(links[i-1])
print(res) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...