使用正则表达式将每行的第一个字母大写

时间:2013-03-15 11:18:22

标签: python regex string

我试图让每一行的第一个字母成为大写

我使用以下正则表达式

ModCon = re.sub('^[a-z]{1}', lambda x: x.upper(), ModCon)

运行程序时没有任何反应。

2 个答案:

答案 0 :(得分:2)

^锚仅匹配输入字符串的开头。如果您希望在每个换行符后匹配,则还需要为其添加re.Mre.MULTILINE标记:

ModCon = re.sub('^[a-z]', lambda x: x.group().upper(), ModCon, flags=re.M)

我删除了{1}部分;它是隐式的,没有重复指示符,字符集只匹配一个字符。

替换函数传递Match object,因此您需要通过调用.group()方法拉出匹配的字符串。

答案 1 :(得分:1)

lambda函数中的变量x不是string类型,而是< type' _sre.SRE_Match>>。为了获得匹配的字符串,您需要call x.group()

因此(也使用其他答案中的提示),以下脚本可以正常工作:

import re
ModCon= "what is your favorite color?\nred"
ModCon = re.sub('^[a-z]', lambda x: x.group().upper(), ModCon, flags=re.M)
print (ModCon)