hackerrank上面一道Python题capitalize

将字符串中的单词第一个字母大写,当测试样例为“hello world”也就是两个单词之间有多个空格的时候下面代码错误,报错为超出字符串索引范围。但若将append一句中的word[0]改为word[:1]则代码正常执行,求问为什么

  def capitalize(string):
    s_list = string.split(" ")
    s_result = []
    for word in s_list:
        s_result.append(word[0].upper() + word[1:])
    s_result = " ".join(s_result)   #转化为string

    return s_result
 >>> ''[:1].upper()
''
>>> ''[0].upper
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: string index out of range

区别在于这个
也可以先对stirng通过正则处理掉多余的空格

>>> import re
>>> re.sub(' +', ' ', 'hello     world   aha')
'hello world aha'

因为非字母没办法调用upperm,需要先判断。