Как заменить, если первые две буквы в слове повторяются с одной и той же буквой?
Например,
string = 'hhappy'
И я хочу получить
happy
Я пытался с
re.sub(r'(.)\1+', r'\1', string)
Но это дает
hapy
Спасибо!
3 ответа
Вам необходимо добавить курсор (^
) a> для соответствия только началу строки.
re.sub(r'^(.)\1+', r'\1', string)
Примере:
import re
string = 'hhappy'
print re.sub(r'^(.)\1+', r'\1', string)
Печать:
happy
Вышеупомянутое работает только для начала строки. Если вам нужно это для каждого слова , вам нужно сделать следующее:
re.sub(r'\b(\w)\1+', r'\1', string)
Регулярное выражение будет
\b(\w)\1+
\b
проверяет границу слова.
Проверьте это здесь, на regex101.
Или вы можете просто нарезать:
string = 'hhappy'
func = lambda s: s[1:] if s[0] == s[1] else s
new_string = func(string)
# happy
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
r'\b(\w)\1+'