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

时间:2017-11-17 18:28:37

标签: python regex list dictionary

我有以下代码段: 我想在列/键“Something”上找到行,值为数字(它们始终是整数)并删除匹配的行。我用re.compile()

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

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

2 个答案:

答案 0 :(得分:1)

在迭代时不要尝试从列表中删除项目,它不能很好地工作: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"])

这样的正则表达式检查

答案 1 :(得分:0)

您可能希望匹配包含数字的行,而不是删除您的行:

import re
rx = re.compile(r'^\D+$')

new_rows = (row for row in lst if rx.match(row))

这会生成一个生成器,您可以迭代或将其完全转换为列表 此外,使用list作为变量名是禁止