【问题标题】:How to capitalize the First letter of each word in python?如何将python中每个单词的首字母大写?
【发布时间】:2021-08-08 07:46:32
【问题描述】:

您需要确保护照中的姓名以大写字母开头。例如,alison heck 应正确大写为 Alison Heck。

我试过的代码:

def solve(s):
    words = s.split()
    flag = False
    for word in words:
        if isinstance(word[0], str):
            flag = True
        else:
            flag = False
    
    if flag:
        return s.title()
    else:
        # don't know what to do

s = input()
print(solve(s))
        

此代码在大多数情况下都可以正常工作,除了一种情况,

令人沮丧的测试用例:'1 w 2 r 3g', 并且输出应该是'1 W 2 R 3g', 但由于我们使用的是 .title() 方法,所以最后一个 'g' 也会大写。

【问题讨论】:

  • @BuddyBob Lol,那一定是 Elon 家族的。
  • @BhavyaParikh 如果我们拆分,那么我们应该将其加入,但我无法维护输入中的确切空格,例如(将“_”视为空格):-“hello___world hi ",预期的输出是:- "Hello___World Hi" ,但是当我拆分和加入时,我会得到这样的结果:- "Hello World Hi"
  • 是的,我没有想到那种情况!

标签: python python-3.x function return output


【解决方案1】:

我们可以尝试在此处使用re.sub 匹配模式\b(.),以及将匹配的单个字母大写的回调函数。

inp = '1 w 2 r 3g'
output = re.sub(r'\b(.)', lambda x: x.group(1).upper(), inp)
print(output)  # 1 W 2 R 3g

【讨论】:

    【解决方案2】:

    如果解决了您的问题,请勾选此项

    z=[]
    s = input()
    x=s.split(" ")
    print(x)
    for i in x:
        z.append(i.capitalize())
    
    v=" ".join(z)
    print(v)
    

    【讨论】:

    • 这种方法的问题是,如果我们拆分,那么我们应该将其加入,但我无法保持输入的确切空格,例如:-hello world hi,预期输出是:- Hello World Hi ,但是当我拆分并加入时,我会得到这样的结果:- “Hello World Hi”
    【解决方案3】:

    如果你使用 numpy 模块,那么你很容易就能得到答案! 例如 = 艾莉森赫克

    from numpy import *
    
    answer=input("give your input").title()
    print(answer)
    

    这个模块是专门为此目的而制作的。

    【讨论】:

      【解决方案4】:

      你可以这样调用:

      s = '1 w 2 r 3gH'
      print(' '.join([word.capitalize() for word in s.split()]))
      # 1 W 2 R 3gh
      

      但请注意,除了更改示例中给出的第一个字母外,其余字母也将小写。

      【讨论】:

        【解决方案5】:

        您可以使用 RE,也可以尝试这样的解决方案

        def solve(s):
            res=""
            for i in range(len(s)):
                if i==0:
                   if s[i].isalpha():
                       res+=s[i].capitalize()
                   else:
                       res+=s[i]
                else:
                    if s[i].isalpha() and s[i-1]==' ':
                        res+=s[i].capitalize()
                    else:
                        res+=s[i]
            return res 
        

        【讨论】:

          【解决方案6】:

          #替换

          def 解决:

          for i in s.split():
              s = s.replace(i,i.capitalize())
          return s
          

          在 Python 中,capitalize() 方法返回原始字符串的副本,并将字符串的第一个字符转换为大写(大写)字母,同时将字符串中的所有其他字符转换为小写。

          【讨论】:

          • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
          猜你喜欢
          • 2015-11-10
          • 2020-08-30
          • 2015-11-04
          • 2012-11-11
          • 2012-07-24
          • 2021-09-07
          • 1970-01-01
          • 1970-01-01
          • 2014-05-19
          相关资源
          最近更新 更多