str.capitalize() 和 str.title() 有啥区别?
Posted
技术标签:
【中文标题】str.capitalize() 和 str.title() 有啥区别?【英文标题】:Any difference between str.capitalize() and str.title()?str.capitalize() 和 str.title() 有什么区别? 【发布时间】:2020-04-10 14:01:36 【问题描述】:str.title()
和 str.capitalize()
有什么区别吗?我对文档的理解是,这两种方法都将单词的第一个字母大写,其余字母小写。有没有人遇到过不能互换使用的情况?
【问题讨论】:
【参考方案1】:title()
改变每个单词,但capitalize()
只改变句子中的第一个单词:
>>> a = 'silly question'
>>> a.title()
'Silly Question'
>>> a.capitalize()
'Silly question'
>>>
【讨论】:
不正确。 '美国'.capitalize() 返回'美国'。【参考方案2】:是的,有区别。 2,实际上。
-
在
str.title()
中,如果单词包含撇号,则撇号后面的字母将大写。
str.title()
将句子的每个单词大写,而str.capitalize()
仅将整个字符串的第一个单词大写。
From the docs:
str.title()
返回字符串的标题版本,其中单词以 大写字符,其余字符为小写。
For example:
>>>
>>> 'Hello world'.title()
'Hello World'
该算法使用一个简单的与语言无关的单词定义 作为一组连续的字母。该定义适用于许多 上下文,但它意味着缩写和所有格中的撇号 形成单词边界,这可能不是我们想要的结果:
【讨论】:
【参考方案3】:我会用一个例子来解释区别:
假设您有一个字符串str1 = 'a b 2w'
,并且您希望将所有第一个字符大写,但如果第一个字符是数字,则您不想更改。
期望的输出 -> A B 2w
如果你这样做 str1.title()
它会导致这个 -> A B 2W
而str1.capitalize()
将给出以下结果 -> A b 2w
要获得想要的结果,您必须执行以下操作:
for x in str1.split():
str1 = str1.replace(x, x.capitalize())
【讨论】:
以上是关于str.capitalize() 和 str.title() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章