Вы можете использовать генератор для чтения всех строк и strip()
нежелательных новых строк.
Из генератора вы используете только те элементы, которые являются «Истиной» - пустые строки считаются False
.
Преимущество: вы создаете только один список и избавляетесь от пустых строк:
Записать файл:
filename = "t.txt"
with open(filename,"w") as f:
f.write("""
c
oo
l
te
xt
""")
Файл процесса:
with open(filename) as f:
testo = [x for x in (line.strip() for line in f) if x] # f.readlines() not needed. f is
# an iterable in its own right
print(testo) # ['c', 'oo', 'l', 'te', 'xt']
Вы можете сделать то же самое:
testo = [line.strip() for line in f if line.strip()]
но это выполнит strip()
дважды и будет немного менее эффективным.
Вывод:
['c', 'oo', 'l', 'te', 'xt']
Доку:
Предлагаемая альтернатива от Эли Корвиго :
testo = list(filter(bool, map(str.strip, f)))
с по сути то же самое - замена явного списка comp с использованием генератора comp на map
из str.strip
на f
(что приводит к генератору) и применение filter
к нему, чтобы передать его в список.
См. встроенную функцию для документации filter,map,bool
.
Мне больше нравится мой, хотя; о)