【问题标题】:splitting and joining words in a string to remove extra spaces in between words拆分和连接字符串中的单词以删除单词之间的多余空格
【发布时间】:2020-12-02 21:58:00
【问题描述】:

我对 python 还很陌生,所以我试图获取一个包含两个单词的字符串,这两个单词可能是由 1 个或多个空格分隔的大写和小写的混合(就像我的示例中的变量名一样)和把它变成一个字符串 “Banana Split”,其中每个单词的第一个字母大写,其余字母小写,除了两个单词之间的空格外,空格被删除。这是我得到的:

name = "banAna   sPlit"
name = name.lower()
name = name.split()
for i in name: 
   i = i[0].upper() + i[1:] 

name = " ".join(i)

print(name)

为什么只拆分第一个单词? for 循环不是针对包含“banana”和“split”的列表的每个元素吗?我应该如何解决这个问题?

【问题讨论】:

  • 如果你想使用那个词,它会“解决”每个元素。如果您的意思是它是否更新每个元素,那么不,它不会。
  • 当您分配给i 时,您只是分配给变量,而不是它从中获取值的列表元素。

标签: python split


【解决方案1】:

尝试使用title()函数!

name = "banAna   sPlit"
name = name.lower()
name = name.split()

array = []
for i in name: 
    array.append(i.title())

name = " ".join(array)

print(name)

这也删除了单词之间的空格!

【讨论】:

  • 不知道那个功能。谢谢!如果标题中存在不应该大写的单词(例如连词)怎么办?例如在“United States of America”中,of 的两个字母都保持小写。
  • @d784 我相信您可以在 for 循环中添加简单的 if 语句。如果您需要帮助,请告诉我!
【解决方案2】:

您可以创建一个包含所需调整的新列表。

name = "banAna   sPlit"
name = name.lower()
name = name.split()
name =  [i[0].upper() + i[1:] for i in name] 

name = " ".join(name)

print(name)

【讨论】:

    【解决方案3】:

    i 接受元素的值,但分配给i 将重新分配变量,而不是分配给列表的值。取而代之的是enumerate 列表,因此您可以获取索引和值,然后将新值分配给具有索引的列表:

    for i, v in enumerate(name):
        name[i] = v[0].upper() + v[1:]
    
    name = " ".join(name)
    

    【讨论】:

      【解决方案4】:

      分配给i 不会分配给列表元素,它只是分配给变量。

      使用列表推导式创建一个包含修改的新列表。

      name = [i[0].upper() + i[1:] for i in name]
      name = " ".join(name)
      

      【讨论】:

        【解决方案5】:

        这考虑了两个以上的空格

        name = "banAna   sPlit"
        names = name.split(' ')
        names = str([" ".join(filter(None,names))]).title()
        
        print(names)
        
        >>> ['Banana Split']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-02
          • 2015-02-08
          • 2012-05-20
          • 2016-11-27
          • 1970-01-01
          • 2020-05-18
          • 2018-04-24
          • 2020-06-29
          相关资源
          最近更新 更多