使用带有变量的正则表达式验证条件



我有一个Python程序,它接受用户输入,如下所示:

python3 script.py in.csv ‘Length>4.5;Height<1'

in.csv是要应用某些条件的输入数据。在上面的示例中,长度和高度是输入数据的变量。任何数量的条件都是可能的。在上面的例子中,2 个不同的变量上有 2 个条件。实际上,它可能有更多的变量。 我的变量列表是(都是数值变量(:

var_list = ['Length' , 'Height', 'Weight', 'Version', 'ID']

我想:

  1. 验证条件是否为有效的逻辑表达式。
  2. 使用该条件筛选数据。

为此,我想构建一个正则表达式来解决第 1 部分,我认为如果我能够破解第 2 部分,第 1 部分将随之而来。但是我无法构建正则表达式并匹配条件。

  1. 首先,我将参数拆分为";",以获取您输入的比较列表。

  2. 我看到的适当的正则表达式是"((\w+(([><=]((.+((",它应该同时匹配两者

  3. 我会将正则表达式映射到我们从步骤 1 中获得的列表,以获得匹配项

  4. 然后你可以使用 group(( 来获取匹配的每个部分。

import re
a = "Length>4.5;Height<1".split(';')
r = re.compile(r'(w+)(>=|<=|[><=])([0-9]+.[0-9]+|[0-9]+)')
res = list(map(r.match, a))
print(res[0].group(0)) # 'Length>4.5'
print(res[0].group(1)) # 'Length'
print(res[0].group(2)) # '>'
print(res[0].group(3)) # '4.5'
# res[1] has 'Height<1'

最新更新