我有以下代码片段:我想在列/键"某物"上找到值为数字(它们始终是整数(的行并删除匹配的行。我已经用re.compile((尝试过了
for row in list:
if re.compile("d") in row["Something"]:
print(row)
del (row)
在这种情况下,如何正确实施?
尝试在迭代时从列表中删除项目,它的效果不佳:在迭代时从列表中删除项目。无论如何,del row
不起作用,因为您只是删除名称,而不是列表项。
我假设您要删除行,如果row["Something"]
是整数值。
当数据仅为数字时,我会使用列表推导过滤掉来重建列表(通过使用isdigit()
可以在这里避免正则表达式(:
[row for row in lst if not row["Something"].isdigit()]
这不会照顾负数,注意。为此,您需要像re.match("-?d+",row["Something"])
这样的正则表达式类型检查
希望匹配不包含数字的行,而不是删除您的行:
import re
rx = re.compile(r'^D+$')
new_rows = (row for row in lst if rx.match(row))
这将产生一个生成器,您可以迭代或将其完全转换为列表。
此外,使用 list
作为变量名称是禁忌。