LINUX.ORG.RU

Не извлекается символ из строки при генерации списка

 


0

1

Требовалось произвести кое-какие преобразования строк в списке. Обнаружил, что при использовании list comprehension не могу взять i-й символ из строки, пишет «string index out of range». Вне генератора выражение работает нормально.

>>> ls1[0]
"#mkdir '1236'"
>>> line = ls1[0]
>>> line[0]
'#'
>>> [line[0] for line in ls1]
Traceback (most recent call last):
  File "<python-input-49>", line 1, in <module>
    [line[0] for line in ls1]
     ~~~~^^^
IndexError: string index out of range

Для других индексов — то же. В итоге сделал через регулярные выражения, но в чём проблема?
Python 3.13.3

P.S. Гуглить не получается, интернет в доме почти не работает, все ремонтники в отпуске. ЛОР кое-как грузится, с более навороченными сайтами — швах.

Ответ: Пустая строка в конце после str.split(‘\n’)

★★★★★

Последнее исправление: question4 (всего исправлений: 1)

Ну так пустые строки же в списке? Ви же содержание списка не приводите почему-то.

In [1]: ls1=["#mkdir '1236'", "bar", ""]

In [2]: [line[0] for line in ls1]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[2], line 1
----> 1 [line[0] for line in ls1]

IndexError: string index out of range

In [3]: [line[0] for line in ls1 if line]
Out[3]: ['#', 'b']

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от sovety_ot_sonika

Ну какая-то из строк в ls1 пустая значит

Был уверен, что удалил их. Перепроверил ещё раз. Забыл удалить последнюю пустую строку после применения split(‘\n’) к текстовому файлу. Спасибо.

question4 ★★★★★
() автор топика