How can I filter items from a list in Python?
python
Solution
No need for regular expressions here. Use `str.isalpha`. With and without list comprehensions:
my_list = ['foo','bar','baz','>=','5.2']
# With
only_words = [token for token in my_list if token.isalpha()]
# Without
only_words = filter(str.isalpha, my_list)
Personally I don't think you have to use a list comprehension for everything in Python, but I always get frowny-faced when I suggest `map` or `filter` answers.
Problem
I have data naively collected from package dependency lists. Depends: foo bar baz >= 5.2 I end up with ``` d = set(['foo','bar','baz','>=','5.2']) ``` I don't want the numerics and the operands. In Perl I would ``` @new = grep {/^[a-z]+$/} @old ``` but I can't find a way to e.g. pass remove() a lambda, or something. The closest I've come is ugly: ``` [ item != None for item in [ re.search("^[a-zA-Z]+$",atom) for atom in d] ] ``` which gets me a map of which values out of the set I want...if the order of the set is repeatable? I know that's not the case in Perl hashes. I know how to iterate. :) I'm trying to do it the pythonesque Right Way