Поиск слова. 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
→ Ссылка