Пропуск первого значения в питоне для цикла - PullRequest
0 голосов
/ 05 ноября 2018
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

однако он просто испортил код. Поэтому я предполагаю, что это как-то связано с моим отступом, но я не уверен, как именно я должен его отформатировать.

РЕДАКТИРОВАТЬ: я хотел бы знать, как использовать продолжить, чтобы пропустить добавление пробела перед первой буквой в моей строке вместо того, чтобы впоследствии удалять его

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Пожалуйста, проверьте код ниже для ожидаемого решения:

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)  
0 голосов
/ 05 ноября 2018

В for i in list(c): ваша переменная i является элементом списка, а не его индексом. У него больше нет информации о текущем индексе.

i[0] пытается получить доступ к первому элементу i, что, вероятно, не имеет большого смысла.

Python предлагает функцию enumerate для перебора элементов вместе с их индексами:

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

Тогда index - текущий индекс в цикле, который вы можете сравнить с 0, например, с if index==0:.

...