【问题标题】:Any difference between str.capitalize() and str.title()?str.capitalize() 和 str.title() 有什么区别?
【发布时间】:2020-04-10 14:01:36
【问题描述】:

str.title()str.capitalize() 有什么区别吗?我对文档的理解是,这两种方法都将单词的第一个字母大写,其余字母小写。有没有人遇到过不能互换使用的情况?

【问题讨论】:

    标签: python string methods case-sensitive title-case


    【解决方案1】:

    title() 改变每个单词,但capitalize() 只改变句子中的第一个单词:

    >>> a = 'silly question'
    >>> a.title()
    'Silly Question'
    >>> a.capitalize()
    'Silly question'
    >>> 
    

    【讨论】:

    • 不正确。 '美国'.capitalize() 返回'美国'。
    【解决方案2】:

    是的,有区别。 2,实际上。

    1. str.title() 中,如果单词包含撇号,则撇号后面的字母将大写。
    2. 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 2Wstr1.capitalize() 将给出以下结果 -> A b 2w

      要获得想要的结果,您必须执行以下操作:

      for x in str1.split():

      str1 = str1.replace(x, x.capitalize()) 
      

      【讨论】:

        猜你喜欢
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        • 2011-11-22
        • 2015-03-26
        • 2013-08-19
        相关资源
        最近更新 更多