如何在字典中的 if 语句中实现正则表达式



我有以下代码片段:我想在列/键"某物"上找到值为数字(它们始终是整数(的行并删除匹配的行。我已经用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 作为变量名称是忌。

最新更新