将_附加到列表中以多个'('

时间:2017-05-31 22:09:20

标签: list python-3.x list-comprehension

我有list

lst = ['(234A2) or (47) and 86', '(((56 or 2B2E1) and 623) and not 876) or 111']

我正在尝试在每个项目前添加_,同时保留()结构

['(_234A2) or (_47) and _86', '(((_56 or _2B2E1) and _623) and not _876) or _111']

我试过

lst_split = []

for item in lst:
    lst_split = item.split()

append_lst = []
for item in lst_split:
    if item[0].isdigit():
        item = '_' + item
        append_lst.append(item)
append_lst

['_2B2E1)', '_623)', '_876)', '_111']

如何向以任意数量_开头的项目添加(以及使用列表理解实现此目的的更简洁方法是什么?

1 个答案:

答案 0 :(得分:1)

这似乎是使用正则表达式的好地方:

import re

def prefix_numbers(lst):
    return [re.sub('\d+', lambda match: '_' + match.group(), item) for item in lst]

示例输出:

>>> lst = ['(234) or (47) and 86', '(((56 or 22) and 623) and not 876) or 111']
>>> prefix_numbers(lst)
['(_234) or (_47) and _86', '(((_56 or _22) and _623) and not _876) or _111']