Reusing a changed key in list comprehension

foo = open('words.txt').readlines()
[k.rstrip() for k in foo if k.rstrip() != '']

I would like to reuse a modified key like

[k.rstrip() for k in foo if k != '']

Is it possible?


# input (words.txt)
# this will be just some lines with one or more words separated by space. 
# there will be no *special* case or anything 
foo bar  
baz  
bar baz waz

# expected output
>>> ['foo bar', 'baz', 'bar baz waz']
+4
source share
1 answer

Do it like this:

[x for x in (k.replace('\n', '').strip() for k in foo) if x]

It looks like you want to filter out empty lines, you can do something like this:

#Assuming `c` is the file object
>>> [line.rstrip() for line in c if not line.isspace()]
['foo bar', 'baz', 'bar baz waz']
#Demo
>>> foo = ['foo bar\n', 'baz\n', 'bar baz waz\n', '   \n']
>>> [line.strip() for line in foo if not line.isspace()]
['foo bar', 'baz', 'bar baz waz']
+2
source

Source: https://habr.com/ru/post/1538949/


All Articles