Pythonic way to determine if one char of many in a string

odeits odeits at gmail.com
Mon Feb 16 08:31:42 CET 2009


On Feb 15, 9:56 pm, Chris Rebert <c... at rebertia.com> wrote:
> On Sun, Feb 15, 2009 at 9:17 PM,  <pyt... at bdurham.com> wrote:
> > I need to test strings to determine if one of a list of chars is in the
> > string. A simple example would be to test strings to determine if they have
> > a vowel (aeiouAEIOU) present.
>
> > I was hopeful that there was a built-in method that operated similar to
> > startswith where I could pass a tuple of chars to be tested, but I could not
> > find such a method.
>
> > Which of the following techniques is most Pythonic or are there better ways
> > to perform this type of match?
>
> > # long and hard coded but short circuits as soon as match found
> > if 'a' in word or 'e' in word or 'i' in word or 'u' in word or ... :
>
> > -OR-
>
> > # flexible, but no short circuit on first match
> > if [ char for char in word if char in 'aeiouAEIOU' ]:
>
> Just use the fairly new builtin function any() to make it short-circuit:
>
> if any(char.lower() in 'aeiou' for char in word):
>     do_whatever()
>
> Cheers,
> Chris
>
> --
> Follow the path of the Iguana...http://rebertia.com

If you want to generalize it you should look at sets
http://docs.python.org/library/sets.html

It seems what you are actually testing for is if the intersection of
the two sets is not empty where the first set is the characters in
your word and the second set is the characters in your defined string.




More information about the Python-list mailing list