python -regular expression - list element
Matimus
mccredie at gmail.com
Wed Jun 25 12:35:00 EDT 2008
On Jun 25, 2:55 am, antar2 <desoth... at yahoo.com> wrote:
> Hello,
>
> I am a beginner in Python and am not able to use a list element for
> regular expression, substitutions.
>
> list1 = [ 'a', 'o' ]
> list2 = ['star', 'day', 'work', 'hello']
>
> Suppose that I want to substitute the vowels from list2 that are in
> list1, into for example 'u'.
> In my substitution, I should use the elements in list1 as a variable.
> I thought about:
>
> for x in list1:
> re.compile(x)
> for y in list2:
> re.compile(y)
> if x in y:
> z = re.sub(x, 'u', y)
> but this does not work
Others have given you several reasons why that doesn't work. Nothing I
have seen will work for words which contain both 'a' and 'o' however.
The most obvious way to do that is probably to use a re:
>>> words = ['star', 'day', 'work', 'hello', 'halo']
>>> vowels = [ 'a', 'o' ]
>>> import re
>>> vp = re.compile('|'.join(vowels))
>>> [vp.sub('u', w) for w in words]
['stur', 'duy', 'wurk', 'hellu', 'hulu']
>>>
However, the fastest way is probably to use maketrans and translate:
>>> from string import maketrans, translate
>>> trans = maketrans(''.join(vowels), 'u'*len(vowels))
>>> [translate(w, trans) for w in words]
['stur', 'duy', 'wurk', 'hellu', 'hulu']
Matt
More information about the Python-list
mailing list