如何用Python将段落中每个句子首词首字母转为小写?
Python实现段落多句首单词首字母小写(保留专有名词大写)
直接用正则表达式匹配段落中所有句子开头的单词,将其首字母转为小写即可,无需逐个拆分句子再拼接。以下是实现代码:
import re def lowercase_sentence_starts(text): # 匹配文本开头或句末标点(.?!)后空格起始的单词 pattern = r'(^|(?<=[.!?]\s))([A-Z][a-zA-Z\']*)' # 将匹配到的单词首字母转为小写 return re.sub(pattern, lambda match: match.group(1) + match.group(2).lower(), text) # 测试示例 original = "This is a example sentence. Please help me. I don't want this situation. In Berlin we have a great time." result = lowercase_sentence_starts(original) print(result)
代码说明
- 正则表达式
(^|(?<=[.!?]\s)):定位两种合法的句子起始位置——文本开头,或者句号、感叹号、问号加空格的后面(正向断言,不占用匹配字符) ([A-Z][a-zA-Z\']*):匹配以大写字母开头的单词,支持包含撇号的特殊单词(比如I don't里的I)- lambda替换逻辑:保留起始位置的原有字符(比如句末的句号空格),仅将捕获到的单词首字母转为小写,不影响句中其他大写的专有名词(如示例中的
Berlin)
扩展支持
如果需要处理更多特殊句末符号(比如分号),只需调整正则的断言部分,例如:
pattern = r'(^|(?<=[.!?;]\s))([A-Z][a-zA-Z\']*)'
内容的提问来源于stack exchange,提问作者ulmo
相关产品推荐
相关产品推荐

