Python如何将字符串转为标题格式且保证撇号后字母为小写
问题原因
str.title()的规则是将每个单词的首字母大写,其余字母小写,但它会把撇号'后面的字符识别为新单词的首字母,所以才会出现Murang'A的不符合预期结果。
解决方案
方法1:使用string.capwords(适配多单词场景)
string.capwords会先将所有字符转为小写,再将空格分隔的每个单词的首字母转为大写,不会把撇号后的字符识别为新单词,完全符合需求,示例代码如下:
import string sr = "MURANG'A" res = string.capwords(sr) print(res) # 输出:Murang'a
方法2:手动处理(适配单单词场景,无需导入依赖)
如果你的使用场景都是单个单词,直接手动处理首字母大写、其余字符小写即可:
sr = "MURANG'A" res = sr[0].upper() + sr[1:].lower() print(res) # 输出:Murang'a
方法3:正则自定义实现(灵活适配复杂规则)
如果需要自定义更多标题转换规则,或者需要处理非空格分隔的单词场景,可以用正则匹配所有单词首字母做大写处理:
import re # 支持多单词带撇号的场景 sr = "MURANG'A O'CONNOR" res = re.sub(r'\b\w', lambda x: x.group().upper(), sr.lower()) print(res) # 输出:Murang'a O'connor
内容的提问来源于stack exchange,提问作者user308827
相关产品推荐
相关产品推荐

