通过在Python中的非空列表中使用for循环内的条件将匹配添加到新的空列表中

时间:2013-12-05 23:04:55

标签: python regex if-statement for-loop append

我有这个清单:

loss = ['strike', 'customer', '6', '.']

和一个空列表:

profit = []

我想告诉Python(1)忽略列表中的非字母数字项,检查列表中的每个项目,(2)如果一个单词以s开头(用正则表达式查找字母s),请附加这个单词在新列表中(利润),(3)否则如果一个单词以c开头,则将该单词附加到新列表中(利润)。

我如何获得

profit = ['strike', 'customer']

2 个答案:

答案 0 :(得分:3)

您可以使用字符串方法而不是正则表达式:

>>> loss = ['strike', 'customer', '6', '.']
>>> profit = [x for x in loss if x.isalnum() and x.startswith(("c", "s"))]
>>> profit
['strike', 'customer']

(实际上,考虑到它,在其他顺序中可能会更好,x.startswith(("c", "s")) and x.isalnum() - 这样就可以跳过线性isalnum检查,如果简单startswith检查失败。)

答案 1 :(得分:0)

>>> for x in loss:
...     if x.startswith(('s','c')): profit.append(x)
... 
>>> profit
['strike', 'customer']