给出一段不规范的英文,只包含字母、空格“ ”、逗号“,”、句号“.”,每个句子以句号“.”结尾。要求调整所有英文字母的大小写,使其满足规范:每个句子首字母大写,字母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())
用正则就不应该那么复杂啊。。。。