跳过python中的第一个值进行循环

时间:2018-11-05 05:30:17

标签: python list loops iteration

e = 'NewCamelCaseWord'
new_word = []

def snake_case_formatter(c, sep='-'):
    for i in list(c):
        if i.isupper():
            new_word.append(sep)
            i = i.lower()
        new_word.append(i)
    else:
        if new_word[0] == sep:
            del new_word[0]
        word = ''.join(new_word)
        return word 

嗨,这是我的代码,用于将驼峰式案例函数名称更改为蛇形案例。创建此函数时,我通过将字符串更改为列表,然后在大写字母前的空格中添加空格来完成此操作,但这也意味着在单词开头之前会有一个空格。这意味着当我使用破折号作为分隔符将字符串连接在一起时,函数名称的开头会出现一个破折号。我通过删除else函数中的第一个字符来解决了该问题。如何使循环跳过首字母(如果是大写字母)?我试过像这样继续使用

def snake_case_formatter(c, sep='-'):
    for i in list(c):
        if i.isupper():
            if i[0]:
                continue
            new_word.append(sep)
            i = i.lower()
        new_word.append(i)
    else:
        word = ''.join(new_word)
        return word

但是它只是弄乱了代码。因此,我认为它与缩进有关,但是我不确定我应该如何格式化它。

编辑:我想知道如何使用Continue来跳过字符串中第一个字母之前的空格,而不必随后删除

2 个答案:

答案 0 :(得分:1)

for i in list(c):中,变量i是列表的元素,而不是其索引。它不再具有有关当前索引的信息。

i[0]试图访问i的第一个元素,这可能没有多大意义。

Python提供了enumerate函数,用于遍历元素及其索引:

for index, i in enumerate(list(c))

然后index是循环中的当前索引,您可以将其与0进行比较,例如与if index==0:进行比较。

答案 1 :(得分:0)

请检查以下代码以获取期望的解决方案:

e = 'CamelCaseWord'
new_word = []

range(len(e))
def snake_case_formatter(c, sep='-'):
    for i in range(len(e)):
        if i==0 and e[i].isupper():
            continue
        elif e[i].isupper()==True:
            new_word.append('-' + e[i].lower())
        else: 
            new_word.append(e[i])
    print(''.join(new_word))

snake_case_formatter(e)