如何在python中创建小写字符串的一部分?

时间:2014-10-20 23:59:53

标签: python string split lowercase

我正在尝试获取一个字符串,该字符串是一个段落长整小的所有单词,并非完全大写。 " QUICK brown fOx"应打印为" QUICK棕色狐狸"这个功能之后。它似乎没有改变任何东西,但确实留下了全部大写的字样。我如何将字符串中的单词小写并将其返回到字符串?

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

3 个答案:

答案 0 :(得分: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))

答案 1 :(得分:1)

您当前的解决方案是有效的,但您丢掉了结果。您应该将它们附加到不同的字符串,然后打印该字符串。例如:

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')

答案 2 :(得分:0)

如果单词全部大写x.isupper()将为True,则只需转换为lower并加入:

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']