не срабатывает условие проверки строк
Прошу помощи: дана строка 1: 'a clash of KINGS' и строка 2: 'a an the of' нужно получить: 'A Clash of Kings' т.е. сделать заглавными первую букву каждого слова из первой строки, кроме тех слов, что есть во второй строке. мой код:
def title_case(s, d=''):
s1 = [i.title() if i.casefold() not in d.casefold() else i.lower() for i in s.split()]
s2 = ' '.join(s1)
return (s2[:1].upper()+s2[1:])
работает на всех примерах кроме примера: 'First a of in', 'an often into', должен получить 'First A Of In', полуачет: 'First a of in' и не могу понять почему..
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
На ошибку вам уже указали (нужно делить вторую строку по пробелам и искать точные совпадения, а не in), вот ещё для примера "однострочник", который всё это делает (разбитый на 3 строки для удобства просмотра):
def title_case(s, d=''):
return ' '.join(x.title() if not i or \
all(x.casefold() != y.casefold() for y in d.split()) \
else x.lower() for i, x in enumerate(s.split()))
print(title_case('a clash of KINGS', 'a an the of'))
print(title_case('First a of in', 'an often into'))
Вывод:
A Clash of Kings
First A Of In