我正在尝试获取一个字符串,该字符串是一个段落长整小的所有单词,并非完全大写。 " QUICK brown fOx"应打印为" QUICK棕色狐狸"这个功能之后。它似乎没有改变任何东西,但确实留下了全部大写的字样。我如何将字符串中的单词小写并将其返回到字符串?
def AllCaps(string):
for word in string.split(' '):
if word.isupper()==True:
pass
else:
word = word.lower()
print(string)
答案 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']