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显示列表索引超出范围错误。为什么呢?
答案 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
方法,它似乎完全符合您的要求。