Regular Expressions: Search in list


Question

I want to filter strings in a list based on a regular expression.

Is there something better than [x for x in list if r.match(x)] ?

1
54
11/6/2014 7:46:11 PM

Accepted Answer

You can create an iterator in Python 3.x or a list in Python 2.x by using:

filter(r.match, list)

To convert the Python 3.x iterator to a list, simply cast it; list(filter(..)).

90
6/4/2018 6:29:37 AM

Full Example (Python 3):
For Python 2.x look into Note below

import re

mylist = ["dog", "cat", "wildcat", "thundercat", "cow", "hooo"]
r = re.compile(".*cat")
newlist = list(filter(r.match, mylist)) # Read Note
print(newlist)

Prints:

['cat', 'wildcat', 'thundercat']

Note:

For Python 2.x users, filter returns a list already. In Python 3.x filter was changed to return an iterator so it has to be converted to list (in order to see it printed out nicely).

Python 3 code example
Python 2.x code example


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon