在Python中的列表的每个项目上应用正则表达式

时间:2013-12-05 03:52:46

标签: python regex loops for-loop

如果我应用此正则表达式:

re.split(r"(^[^aeiou]+)(?=[aeiouy])", "janu")

在字符串“janu”上,它给出了以下结果:['', 'j', 'anu']

现在,我想在以下列表中应用此正则表达式,以获得上述每个项目的类似结果。是否可以使用for循环,如果是,可以如何使用?

lista = ['janu', 'manu', 'tanu', 'banu']

2 个答案:

答案 0 :(得分:1)

您可以使用list comprehension

>>> from re import split
>>> lista = ['janu', 'manu', 'tanu', 'banu']
>>> [split("(^[^aeiou]+)(?=[aeiouy])", x)[1]+"doc" for x in lista]
['jdoc', 'mdoc', 'tdoc', 'bdoc']
>>>

关于评论的修改:

这将有效:

>>> from re import split
>>> lista = ['janu', 'manu', 'tanu', 'banu']
>>> listb = []
>>> for item in lista:
...     data = split("(^[^aeiou]+)(?=[aeiouy])", item)
...     listb.append(data[2]+data[1]+"doc")
...
>>> listb
['anujdoc', 'anumdoc', 'anutdoc', 'anubdoc']
>>>

答案 1 :(得分:0)

使用列表理解

[re.split(r"(^[^aeiou]+)(?=[aeiouy])", i) for i in list]

可以使用for循环但这被认为是 pythonic 做事的方式。