【问题标题】:How do I make part of a string lowercase in python?如何在python中将字符串的一部分设为小写?
【发布时间】:2014-10-20 23:59:52
【问题描述】:

我正在尝试获取一个大约一个段落长的字符串,并将其中不完全大写的所有单词都小写。在此函数之后,“The QUICK brown fox”应该打印为“the QUICK brown fox”。它似乎没有改变任何东西,但它确实留下了全部大写的单词。如何将字符串中的单词小写并将其返回到字符串中?

def AllCaps(string):
for word in string.split(' '):
    if word.isupper()==True:
        pass
    else:
        word = word.lower()
print(string)

【问题讨论】:

    标签: python string split lowercase


    【解决方案1】:

    您当前的代码所做的只是重新绑定word 变量,这样它现在就拥有'fox' 而不是'fOx'。这对原始的 string 变量没有影响。

    你可以打印出你得到的每个单词:

    for word in string.split(' '):
        # your existing code
        print(word, end=' ')
    

    或者,也许更好,您可以将所有单词累积到一个列表中,将它们重新连接成一个字符串,然后打印出来:

    words = []
    for word in string.split(' '):
        # your existing code
        words.append(word)
    print(' '.join(words))
    

    【讨论】:

    • 我看到你也是幻影downvoter的受害者
    • @PadraicCunningham:是的,起初我以为是某个人不喜欢这个问题,并认为我们正在回答一个帮助吸血鬼,但鉴于他没有投票关闭,标记,否决,或对问题发表评论……不知道。这个网站上总是有一些莫名其妙的选民,我已经不再试图弄清楚他们了。
    【解决方案2】:

    您当前的解决方案有点工作,但您正在丢弃结果。您应该将它们附加到不同的字符串,然后打印该字符串。例如:

    def allCaps(string):
        newString = ''
        for word in string.split(' '):
            if word.isupper()==True:
                newString += word + ' '
            else:
                newString += word.lower() + ' '
        print(newString)
    
    allCaps('The QUICK brown fOx')
    

    【讨论】:

      【解决方案3】:

      如果一个单词全部大写 x.isupper() 将是 True 否则只需转换为小写并加入:

      def All_caps(s):
          return " ".join([x if x.isupper() else x.lower() for x in s.split() ])
      
      In [34]: all_caps("The QUICK brown fOx")#
      Out[34]: 'the QUICK brown fox'
      

      最好避免使用字符串作为变量名,因为它是一个内置模块,如果word.isupper()==True可以写成并且等价于if word.isupper()

      您通常应该使用不带任何参数的split() 来分割任意数量的空白,否则您有时可能无法获得您期望的输出:

      In [5]: s= "foo    bar"
      
      In [6]: s.split(" ")
      Out[6]: ['foo', '', '', '', 'bar']
      
      
      In [7]: s.split()
      Out[7]: ['foo', 'bar']
      

      【讨论】:

      • 在这种情况下,我认为split(' ') 实际上更有意义——因为' '.join 将完全返回他的原始字符串,而不是他的原始字符串,所有运行的空格都转换为单个空格字符。
      • @abarnert,我说的是一般意义上的,例如a,b ="foo bar".split(" ") foo 和 bar 之间有两个空格
      • 当然,split()split(' ') 有用的情况更多(这可能就是为什么前者是第一种情况下的默认值……)。但这似乎是不常见的情况之一。
      猜你喜欢
      • 2016-08-14
      • 1970-01-01
      • 2013-05-30
      • 2010-09-22
      • 2016-01-22
      • 1970-01-01
      • 2016-06-01
      • 2022-11-14
      • 2019-09-19
      相关资源
      最近更新 更多