2014-12-08 3 views
1

Как заменить подстроку, например слова, начинающиеся с заглавных букв, с длиной этой подстроки, возможно, с использованием регулярного выражения.Заменить подстроки в python длиной каждой подстроки

Например: Использование регулярных выражений "\b[A-Z]+[a-z]*\b"

"Он должен пойти в Нью-Йорк"

должны быть преобразованы в это:

«2 должен идти до 3 4 "

Фактический сценарий, который я использую в этом, немного отличается, но я думал, что сценарий более ясен.

ответ

4

Вы можете использовать re.sub для этого, чтобы принять вызов. Этот вызываемый вызывается с объектом соответствия каждый раз, когда обнаруживается неперекрывающееся появление шаблона.

>>> s = "He got to go to New York" 
>>> re.sub(r'\b([A-Z][a-z]*)\b', lambda m: str(len(m.group(1))), s) 
'2 got to go to 3 4' 
0

Это не так лаконичен, но в случае, если вы хотите, чтобы избежать регулярных выражений и лямбда-х вы можете написать что-то вроде этого:

string = "He got to go to New York" 
string = string.split() 

for word in range(len(string)): 
    if string[word][0].isupper(): 
     string[word] = str(len(string[word])) 

print(" ".join(string)) 
+1

Это потерпит неудачу с номерами/символов пунктуации .. Eg: ' Он добрался до Нью-Йорка, самого ... города. –

Смежные вопросы