Check for regular expression in a list
Rustom Mody
rustompmody at gmail.com
Fri May 26 08:40:37 EDT 2017
On Friday, May 26, 2017 at 5:55:32 PM UTC+5:30, Jussi Piitulainen wrote:
> Rustom Mody writes:
>
> > On Friday, May 26, 2017 at 5:02:55 PM UTC+5:30, Cecil Westerhof wrote:
> >> To check if Firefox is running I use:
> >> if not 'firefox' in [i.name() for i in list(process_iter())]:
> >>
> >> It probably could be made more efficient, because it can stop when it
> >> finds the first instance.
> >>
> >> But know I switched to Debian and there firefox is called firefox-esr.
> >> So I should use:
> >> re.search('^firefox', 'firefox-esr')
> >>
> >> Is there a way to rewrite
> >> [i.name() for i in list(process_iter())]
> >>
> >> so that it returns True when there is a i.name() that matches and
> >> False otherwise?
> >> And is it possible to stop processing the list when it found a match?
> >
> > 'in' operator is lazily evaluated if its rhs is an iterable (it looks)
> > So I expect you can replace
> > if not 'firefox' in [i.name() for i in list(process_iter())]:
> > with
> > if not 'firefox' in (i.name() for i in list(process_iter())]):
>
> Surely that should be:
>
> if not 'firefox' in (i.name() for i in process_iter()):
>
> And that again should be:
>
> if any((i.name() == 'firefox') for i in process_iter()):
>
> Which can then be made into:
>
> if any(i.name().startswith('firefox') for i in process_iter()):
>
Nice — Thanks!
More information about the Python-list
mailing list