Как заменить слово в данном предложении определенным шаблоном, если оно нечувствительно к регистру в python?

Мне дано предложение Моя команда — команда BeST на турнире. в качестве тестового примера для создания функции

def case_insensitivity(sentence):
    return new_sentence

который проверяет данное предложение на наличие слова без учета регистра и заменяет слово без учета регистра на XXX_.

то есть

print(case_insensitivity('My team is the BeST team at the tournament'))
result
'My team is the XXX_ team at the tournament'

Как лучше всего это сделать? casefold()

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
25
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Предполагая, что мы определяем целевые слова как имеющие как строчные, так и прописные буквы после первого символа, мы можем попробовать использовать re.sub для параметра регулярного выражения:

def case_insensitivity(sentence):
    return re.sub(r'\w+(?:[A-Z]\w*[a-z]|[a-z]\w*[A-Z])\w*', 'XXX_', sentence)

print(case_insensitivity('My team is the BeST team at the tournament'))

Это печатает:

My team is the XXX_ team at the tournament

Это мое решение (надеюсь, я хорошо понимаю вашу проблему):

  1. вы разбиваете предложение на вводные слова.

  2. ты перебираешь все слова

  3. вы перебираете буквы слов, начиная со второй буквы каждого слова.

  4. проверьте, есть ли заглавные буквы

  5. если вы найдете заглавную букву, вы присваиваете 1 переменной have_to_replace.

  6. ты делаешь замену

    txt = 'My team is the BeST team at the tournament'
    x = txt.split()
    
    for w in x:
        have_to_replace = False
        for l in w[1:]:
            if l != l.casefold():
                have_to_replace = True
        if have_to_replace:
            txt = txt.replace(w, 'XXX_', 1)
    print(txt)
    

По какой-то причине блокировка кода не работает должным образом для первых 3 строк (и последней). Простите за это.

почему вы используете int для логической переменной?

ThiefMaster 10.04.2022 14:04

Ты прав. Это должно быть логическое значение (True/False). Я исправил это.

sipi09 10.04.2022 14:07

Другие вопросы по теме