Поиск слова. if и else
Здраствуйте. Получаю ответы json при парсинге. Создаю список, делаю цикл for после получения названия предмета title. Дальше условие if i in title и соответственно действие. Так вот, почему-то у меня срабатывает esle когда находится "BAD_ITEMS" причем несколько раз...
BAD_ITEMS = ['Silver', 'Broken', 'Bronze'] # Лист "плохих" слов
for weapon in weapons:
title = weapon['title'] # Получаем название из json
price = weapon['price']
original_price = float(price)
print(title) # Выводим название
time.sleep(2)
for i in BAD_ITEMS: # i = "плохие слова" из списка.
if i in title: # Если плохое слово найдено в названии то
print(i)
print('first:', title)
print('first BAD_ITEMS:', BAD_ITEMS)
time.sleep(5)
print('qqqqqqqqqqqqqqqqqqqqqBAD_ITEMqqqqqqqqqqqqqqqqqqqqq')
else: # по идее если плохое слово отсутствует в названии то выполняется след:
print('xxxxxxxxxxxxxxxxxxxxxxxxelsexxxxxxxxxxxxxxxxxxxxxxxx')
и лог:
Current page is: 0
Golden Sword
Golden
first: Golden Sword
first BAD_ITEMS = ['Silver', 'Broken', 'Bronze']
qqqqqqqqqqqqqqqqqqqqqBAD_ITEMqqqqqqqqqqqqqqqqqqqqq
xxxxxxxxxxxxxxxxxxxxxxxxelsexxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxelsexxxxxxxxxxxxxxxxxxxxxxxx
Broken Bow
Process finished with exit code -1
Пробовал elif i not in title:. Переделывал if title in BAD_ITEMS:. Разные перестановки делал, но к сожалению либо срабатывал else, либо вариант который меня не устраивает. Итог... Что я сделал не так? Почему при нахождении BAD_ITEMS срабатывает условие и else? Как можно это исправить? Спасибо.
Ответы (1 шт):
Автор решения: Andy Pavlov
→ Ссылка
Части кода у Вас нет. Поэтому немного додумал и слипы закомментил.
BAD_ITEMS = ['Silver', 'Broken', 'Bronze']
weapons = [
{'title': 'Bronze Weapon', 'price': 125.0},
{'title': 'Great Weapon', 'price': 150.0},
{'title': 'Silver Horn', 'price': 125.0}, ]
for weapon in weapons:
title = weapon['title']
price = weapon['price']
original_price = float(price)
print(title)
#time.sleep(2)
if any([True if b in title else False for b in BAD_ITEMS]):
print('first:', title)
print('first BAD_ITEMS: {}'.format(' '.join([b for b in BAD_ITEMS if b in title])))
#time.sleep(5)
print('qqqqqqqqqqqqqqqqqqqqqBAD_ITEMqqqqqqqqqqqqqqqqqqqqq')
else:
print('xxxxxxxxxxxxxxxxxxxxxxxxelsexxxxxxxxxxxxxxxxxxxxxxxx')
Вывод:
Bronze Weapon
first: Bronze Weapon
first BAD_ITEMS: Bronze
qqqqqqqqqqqqqqqqqqqqqBAD_ITEMqqqqqqqqqqqqqqqqqqqqq
Great Weapon
xxxxxxxxxxxxxxxxxxxxxxxxelsexxxxxxxxxxxxxxxxxxxxxxxx
Silver Horn
first: Silver Horn
first BAD_ITEMS: Silver
qqqqqqqqqqqqqqqqqqqqqBAD_ITEMqqqqqqqqqqqqqqqqqqqqq