Задать вопрос
ifullut
@ifullut
Учу программирование понарошку...

Что делать если в большом слове находит маленькое?

Всем привет. Столкнулся с проблемой: в большом слове (например command) находит по меньше (например man). Как это исправить??
Код:
cms = ["say", "man"]
Bs = "This is command"
for l in cms:
    if l in Bs:
        bs = Bs.replace(l, l.upper())
print(bs)
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F
Порезать строку на слова, заменить, склеить обратно:

bs = ' '.join(n.upper() if n in cms else n for n in bs.split(' '))

Или можно регулярными выражениями воспользоваться:

for n in cms:
  if n in bs:
    bs = re.sub(f'\\b{n}\\b', n.upper(), bs)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Либо разбивать строку BS на слова и искать в ней вхождение, но это долго, надо все знаки учитывать.
Самое легкое - использовать регулярку.

import re

pattern = ''.join(rf'\b{word}\b|' for word in cms)[:-1]
pattern = f'({pattern})'


def repl(match):
    return match.group(1).upper()

bs = re.sub(pattern, repl, Bs)

print(bs)


Какой-то колхоз получился, наверное
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы