【问题标题】:Capitalize first character of a word in a string将字符串中单词的第一个字符大写
【发布时间】:2016-02-14 13:10:34
【问题描述】:

以下版本之一与另一个版本有何不同?

  1. 以下代码从字符串大写返回单词的第一个字母:

    s = ' '.join(i[0].upper() + i[1:] for i in s.split())
    
  2. 以下代码只打印最后一个单词,每个字符用空格分隔:

    for i in s.split():
        s=' '.join(i[0].upper()+i[1:]
        print s
    

【问题讨论】:

  • 你已经回答了自己的问题,不是吗?
  • 将单词大写使用str.capitalize: s = ' '.join(i.capitalize() for i in s.split())
  • @Daniel 或干脆title :)

标签: python if-statement join split


【解决方案1】:

为了完整性和通过搜索引擎找到此问题的人,将字符串中每个单词的首字母大写的正确方法是使用title 方法。

>>> capitalize_me = 'hello stackoverlow, how are you?'
>>> capitalize_me.title()
'Hello Stackoverlow, How Are You?'

【讨论】:

    【解决方案2】:
    for i in s.split():` 
    

    此时i是一个词。

    s = ' '.join(i[0].upper() + i[1:])
    

    这里,i[0] 是字符串的第一个字符,i[1:] 是字符串的其余部分。因此,这是s = ' '.join(capitalized_s) 的快捷方式。 str.join() 方法将单个可迭代对象作为其参数。在这种情况下,iterable 是一个字符串,但这没有区别。对于诸如' '.join("this") 之类的东西,str.join() 遍历可迭代对象的每个元素(字符串的每个字符)并在每个元素之间放置一个空格。结果:t h i s 但是,有一种更简单的方法可以做你想做的事:s = s.title()

    【讨论】:

    • 谢谢。如果我将 for 语句放在开头或结尾,我不明白有什么不同。他们不应该输出相同的结果吗?
    • 在第一个示例中,您将整个字符串放入' '.join 方法中,但在第二个示例中,您在每个单词上使用' '.join
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多