Указатель пустой строки python

Приведенная ниже функция работает , как я хочу , но если аргумент содержит пустую строку в списке его не четкости номера ( строки ): возвращение [ «{0}:» . формат ( строки . index ( i ) + 1 ) + i для i в строках ] print ( число ([ "a" , "b" , "c" ])), как я надеялся.

["1: a", "2: b", "3: c"]

возвращает:

print(number(["a", "", ""]))

точно, как я хочу, чтобы он вернул список

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

["1: a", "2: ", "2: "]

возвращает:

index

Может кто-нибудь объяснить, почему это происходит, и как я могу исправить его, чтобы всегда подсчитывать от одного, независимо от элемента списка, пустым

python,

2

Ответов: 3


2 принят

indexМетод дает первый индекс , в котором появляется пространство в списке. Это не ограничивается только пустыми строками, но любой символ / строка, которая дважды появляется в списке. Используйте , enumerateчтобы иметь переменный подсчет вместо этого.

def number(lines):
    return ['{0}: {1}'.format(i+1, j) for i, j in enumerate(lines)]

0

если вам не нужна пустая строка, попробуйте

    return ['{0}: '.format(lines.index(i) +1) + i for i in lines if i!='']

0

Вот возможное рабочее решение:

def number(lines):
    return ['{0}: {1}'.format(i + 1, l) for i, l in enumerate(lines) if l.strip() != ""]
питон,
Похожие вопросы