如何在Python中对列表应用正则表达式时对其进行迭代?

2024-05-09 01:04:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行这段代码

castResultType = list(filterResultSet[1:32:5]) 
cleanList = []

for i in castResultType:
    cleanList.append(re.sub('[^\d\.]', '',castResultType[i]))

print(cleanList)

我希望得到列表castResultType中的每一项,这是从插入到空列表cleanList中的列表filterResultSet中获取特定值。同时在插入到cleanList之前,将上面的正则表达式应用于castResultType中的每个值。我肯定我做错了什么,如果能得到任何帮助,我将不胜感激。一般来说,我对python和编程也很陌生,所以如果我问了一些愚蠢的问题,我很抱歉


Tags: 代码inre列表for编程listprint
2条回答

您(可能)面临的问题在这一行:for i in castResultType

这一行所做的是在(list) castResultType内的值上循环,并将其元素分配给i。但是,当您调用castResultType[i]时,您要求的是列表中不存在的索引

你可能想做的是:

for i in range(len(castResultType)):
    cleanList.append(re.sub('[^\d\.]', '',castResultType[i]))
# etc

您还可以做的是:

for i in castResultType:
   cleanList.append(re.sub('[^\d\.]', '', i))
# etc

有很多其他的方法来编码你想要做的事情,但是对于初学者来说,这些可能是最熟悉的

除了循环中的bug之外,问题还可能出在正则表达式的使用上。我建议在循环之前在castResultType的单个元素上试验正则表达式

您可以使用内置的map函数将函数映射到iterable中的项:

clean_list = list(map(lambda elem: re.sub('[^\d\.]', '', elem), castResultType))

相关问题 更多 >