调整所有英文字母大小写,使满足规范

给出一段不规范的英文,只包含字母、空格“ ”、逗号“,”、句号“.”,每个句子以句号“.”结尾。要求调整所有英文字母的大小写,使其满足规范:每个句子首字母大写,字母I单独写出时(两侧均为空格或标点)大写,其余字母全部小写。

用正则来写

import re

def normalize_text(text):
    # 将不规范的英文按句号分割成若干个句子
    sentences = re.split(r'(?<=.)s+', text)
    result = []
    for sentence in sentences:
        # 将句子中的所有字母转换成小写字母
        sentence = sentence.lower()
        # 利用正则表达式匹配句子中的单词,判断每个单词是否为"I"
        sentence = re.sub(r'(i)', lambda x: x.group(1).upper() if re.search(r'(^W|i$)', x.string[x.start()-1:x.end()+1]) else x.group(1), sentence)
        # 将句子的首字母转换成大写字母
        sentence = sentence.capitalize() 
        result.append(sentence)
    # 将处理过的句子重新拼接成一个字符串,以句号分隔每个句子
    return '. '.join(result)

# 测试代码
text = "this is a test. i have a cat. she is cute."
print(normalize_text(text))  # 输出:This is a test. I have a cat. She is cute.

该回答引用chatgpt:


def adjust_text(text):
    # 将所有英文字母转为小写
    text = text.lower()
    # 将句子分割成列表
    sentences = text.split('. ')
    # 遍历每个句子
    for i in range(len(sentences)):
        sentence = sentences[i]
        # 将句子的首字母转为大写
        sentence = sentence.capitalize()
        # 将字母 "i" 转为大写
        sentence = sentence.replace(' i ', ' I ')
        # 将句子中的逗号和句号后面的字母转为小写
        sentence = sentence.replace(', ', ', ').replace('. ', '. ').replace(' i.', ' I.')
        # 更新句子
        sentences[i] = sentence
    # 将句子列表拼接成文本
    adjusted_text = '. '.join(sentences)
    return adjusted_text

# 测试
text = "hello, world. how are you? i am fine. thank you!"
adjusted_text = adjust_text(text)
print(adjusted_text)


import re

def upper(m):
    return m.group(1).title()

re.sub(r'(\bi\b|(?:^|\.)\s*[a-z]+)',upper,'wo0eioafje,awer a.awerawpoe ,. feiaw i .we i awe.'.lower())

用正则就不应该那么复杂啊。。。。