在我的程序中列出索引超出范围错误

时间:2018-03-15 08:47:24

标签: python error-handling

def to_camel_case(text):
    arr = []
    if '-' in text:
        arr = text.split('-')
    elif '_' in text:
        arr = text.split('_')
    z = []
    z.append(arr[0])
    for i in range(1, len(arr)):
        arr1 = list(arr[i])
        arr1[0] = arr1[0].upper()
        arr1 = ''.join(arr1)
        z.append(arr1)
    str = ''.join(z)
    return str

在上面的程序中有任何列表索引超出范围错误。 Pycharm没有显示任何错误。但另一个ide显示列表索引超出范围错误。为什么呢?

1 个答案:

答案 0 :(得分:1)

1)答案
如果您在-参数中传递字符串而没有 _to_camel_case字符,则说明List index out of range error上有z.append(arr[0])只是因为在这种情况下arr是一个空列表 如果您在-参数中传递带 _to_camel_case字符的字符串,则表示您没有任何错误,因为arr不是在这种情况下是空的。
这很可能解释了为什么有时你会观察到错误,有时你却没有。

2)根据您的代码更新提案
与您的代码相比,只需进行最少的修改,我建议您进行以下更新:

def to_camel_case(text):
    if '-' in text:
        arr = text.split('-')
    elif '_' in text:
        arr = text.split('_')
    else:
        arr = text.split(' ')
    z = []
    for i in range(0, len(arr)):
        arr1 = list(arr[i])
        arr1[0] = arr1[0].upper()
        arr1 = ''.join(arr1)
        z.append(arr1)
    resultStr = ' '.join(z)
    return resultStr

# All 3 following instructions return the same string "Toto Is My Friend !"
print(to_camel_case("toto is my friend !"))
print(to_camel_case("toto-is-my-friend !"))
print(to_camel_case("toto_is_my_friend !"))

2)更进一步
您可以考虑适用于title()个对象的string方法,它似乎完全符合您的要求。