模式替换 - Python

时间:2014-08-10 13:43:25

标签: python pattern-matching

我有一个商品的表达式过滤字符串,例如

$city=="Paris" and $country=="France" and $price<100 or $units > 95

我想用函数调用替换$前面的字符串,以从上下文中读取字段的值(ctx)

预期产出:

read(ctx, city)=="Paris" and read(ctx, country)=="France" and read(ctx, price)< 100 or read(ctx, units) > 95

在python中执行此操作的更简洁方法是什么?

1 个答案:

答案 0 :(得分:0)

这类似于命名组匹配。但是我在执行替换后使用replace删除了$

In [1]: re.sub(r'(?P<field>\$[\w]+)', 'read(ctx, "\g<field>")', '$city=="Paris" and $country=="France" and $price<100 or $units > 95').replace("$", '')

Out[1]: 'read(ctx, "city")=="Paris" and read(ctx, "country")=="France" and read(ctx, "price")<100 or read(ctx, "units") > 95'