Python .capitalize函数的奇怪行为
我将.capitalize函数的奇怪行为与reduce匹配 而Python .capitalize函数的奇怪行为,python,Python,我将.capitalize函数的奇怪行为与reduce匹配 而camel\u case('camel case word')的结果是'CamelcaseWord',而当我使用.upper()时,例如,一切正常 我误解了什么? 谢谢大家的回复 由于您使用了reduce函数,当您使用“camel case word”调用camel_case时,它相当于以下代码: x,y,z = s.split() (x.capitalize() + y.capitalize()).capitalize() + z.
camel\u case('camel case word')
的结果是'CamelcaseWord'
,而当我使用.upper()
时,例如,一切正常
我误解了什么?
谢谢大家的回复 由于您使用了
reduce
函数,当您使用“camel case word”调用camel_case时,它相当于以下代码:
x,y,z = s.split()
(x.capitalize() + y.capitalize()).capitalize() + z.capitalize()
现在,第三个大写字母(从左起)将所有字符转换为小写,第一个字符将变为大写,这样您就可以
(x.capitalize() + y.capitalize()).capitalize()
等于“Camelcase”和
z.capitalize()
等于“单词”。结果就是这样
现在,当您使用upper时,调用
(x.upper()+y.upper()).upper()
相当于x.upper()+y.upper()
,因此您不会注意到差异。您的预期输出是什么?您可以使用str.title().replace(“,”)
来完成此操作。如果确实必须使用reduce
,则可以使用str title(),正确的方法是使用空字符串作为初始化器参数:reduce((lambda,b:a+b.capitalize()),iterable,“”
z.capitalize()