用每个子字符串的长度替换python中的子字符串

时间:2014-12-08 22:03:59

标签: python regex string

如何使用正则表达式替换子字符串,例如以大写字母开头的单词,以及该子字符串的长度。

例如: 使用正则表达式"\b[A-Z]+[a-z]*\b"

  

"他必须去纽约"

应该转化为:

  

" 2必须去3 4"

我使用它的实际情况有点不同,但我认为这种情况更清楚。

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

这并不简洁,但如果你想避免使用正则表达式和lambda,你可以这样写:

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))