我有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']
如何向以任意数量_
开头的项目添加(
以及使用列表理解实现此目的的更简洁方法是什么?
答案 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']