我有以下代码片段:
我想找到列/键“ 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"])
这样的正则表达式类型检查