Создание условия в Python, которое выскакивает все, что не имеет определенного начала - PullRequest
0 голосов
/ 19 ноября 2018

Итак, я пытаюсь создать цикл в Python, который будет выталкивать элемент из списка, если он не начинается с> \ n, как показано ниже

">\n Item"

Это кодПока у меня есть

for i in clean:
    if ((clean[i])[0:2]) != (">\n"):
        clean.pop[i]

Все элементы являются строками, и я получаю TypeError: строковые индексы должны быть целыми числами

Мне кажется, что я упускаю что-то очевидное.

1 Ответ

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

Если clean - это list, for i in clean будет перебирать элементов из clean в i, а не индексы.Кроме того, pop - это функция, а не список или диктовка, вы не можете использовать квадратные скобки.Кроме того, удаление элементов из списка во время итерации по списку не рекомендуется, поскольку некоторые элементы пропускаются, когда они одновременно сдвигаются вперед, а ваш итератор движется в другом направлении.Таким образом, ваш исправленный код может быть:

for i in range(len(clean) - 1, -1, -1):
    if clean[i][0:2] != ">\n":
        clean.pop(i)

Это проще, если вы просто используете понимание для создания нового списка:

clean = [line for line in clean if line.startswith(">\n")]
...