我有以下代码片段:
我想找到列/键“ Something”上的值为数字(一直都是整数)的行,并删除匹配的行。我已经尝试过re.compile()

for row in list:
    if re.compile("\d") in row["Something"]:
        print(row)
        del (row)


在这种情况下如何正确实施?

最佳答案

请勿在迭代时尝试从列表中删除项目,否则效果不佳:Remove items from a list while iterating。无论如何,del row无效,因为您只是删除名称,而不是列表项。

我假设如果row["Something"]是整数值,则要删除行。

当数据仅是数字时,我将使用列表解析来重建列表(此处可以通过使用isdigit()避免正则表达式):

[row for row in lst if not row["Something"].isdigit()]


请注意,这并不能解决负数问题。为此,您需要像re.match("-?\d+",row["Something"])这样的正则表达式类型检查

10-05 21:13
查看更多