在(Python)中大写单词?

时间:2016-06-11 07:19:52

标签: python string python-2.7 capitalization

我试图写一些东西来把句子中的每个单词都用来大写。它工作正常,如下:

print " ".join((word.capitalize() for word in raw_input().strip().split(" ")))

如果输入为'hello world',则输出为:

    Hello World

但我尝试用不同的方式编写如下:

s = raw_input().strip().split(' ')
for word in s:
    word.capitalize()
print ' '.join(s)

它的输出是错误的:

    hello world

那有什么不对,为什么结果不一样?!谢谢。

3 个答案:

答案 0 :(得分:4)

你的代码中的问题是字符串是不可变的,你试图改变它。因此,如果您不使用循环,则必须创建新变量。

s = raw_input().strip().split(' ')
new_s = ''
for word in s:
    new_s += s.capitalize()
print new_s

或者,如果您使用enumerate迭代列表并更新s,则会有效:

s = raw_input().strip().split(' ')
for index, word in enumerate(s):
    s[index] = .capitalize()
print ' '.join(s)

但是在字符串中大写单词的最佳方法是使用str.title() - 字符串中单词大写的方法:

s = 'hello word'
print(s.title())

答案 1 :(得分:0)

字符串是immutable,您正在尝试更新相同的值,这是不可能的。

创建一个新字符串并以这种方式更新。

s = raw_input().strip().split(' ')
st = ''
for word in s:
    st+= word.replace(word,word.capitalize())
print ''.join(st)

或者

print " ".join([i.capitalize() for i in raw_input().strip().split(" ")])

答案 2 :(得分:0)

print ' '.join([i.capitalize() for i in raw_input('Enter text here:').split(' ')])

这将解决您的问题。