将每个句子的第一个字母大写python [重复]
Posted
技术标签:
【中文标题】将每个句子的第一个字母大写python [重复]【英文标题】:Capitalizing the first letter of every sentence python [duplicate] 【发布时间】:2019-09-04 22:19:20 【问题描述】:我一直在尝试为我的菜单项目创建一个小函数,该函数将字符串作为输入并将每个句子的第一个字母大写。我想我已经接近正确了,但它一直给我一个我似乎无法修复的串联错误。有谁知道我哪里出错了?
def fix_capitalization(usrStr):
s1 = usrStr.split(". ")
s2 = [s1[0].capitalize() + s1[1:] for i in s1]
st2 = '. '.join(s2)
return st2
【问题讨论】:
什么是串联错误? @Tom TypeError: 只能将str(不是“list”)连接到str 不管怎样,不用大写就可以做你想做的事吗? docs.python.org/3/library/stdtypes.html#string-methods - 它只处理字符串中的第一个字母。 【参考方案1】:试试这个:
def fix_capitalization(usrStr):
return ".".join(list(map(lambda x: x.capitalize(),usrStr.split("."))))
这更紧凑。 map() 中的第二个参数——即 usrStr.plit()——返回一个列表,然后由 lambda 函数处理其项目。 lamda 函数返回一个列表(由 map 函数创建)。此列表中的项目由“.”连接。
【讨论】:
【参考方案2】:在列表理解中,你有 s1[0] 而不是 i[0]
def fix_capitalization(usrStr):
s1 = usrStr.split(". ")
s2 = [i[0].capitalize() + i[1:] for i in s1]
st2 = '. '.join(s2)
return st2
【讨论】:
如果我想计算有多少个字母大写,那么添加代码的最佳位置是哪里 应该是字符串中有多少个句子的问题,所以len(s1)
以上是关于将每个句子的第一个字母大写python [重复]的主要内容,如果未能解决你的问题,请参考以下文章