影刀RPA进阶教程:Python协同——用字典映射替代多层条件判断

做电商自动化,条件判断是绕不开的。平台不同、状态不同、操作不同,判断指令一层套一层,流程越写越长,缩进深到自己都看不清。我以前写过一个售后处理流程,根据退款原因、金额、平台三个维度来决定是自动同意还是转人工,用影刀内置的判断指令嵌套了四层,后来加一条新规则,光找应该插在哪个“否”分支里就找了十分钟。更头疼的是,运营过两天又说规则变了,又得小心翼翼地改嵌套。

picture.image 后来我把这块逻辑整个搬到了Python脚本里,用字典加函数的方式替代了多层的“判断”指令。影刀RPA流程里只保留一个“执行Python脚本”,所有复杂的条件分支全在Python里处理,返回一个决策结果。主流程瞬间清爽,改规则也只改Python脚本里的字典,不用在影刀界面的分支线里绕来绕去。我也是非技术背景,这个方法不难,核心就是用字典做“条件→动作”的映射。这篇文章就详细讲这种模式,给厌恶深层嵌套的你一条出路。

用Python替代复杂条件判断的优势

picture.image

影刀的“判断”指令对于简单的是/否判断很方便,但当条件组合多起来,比如“平台是拼多多且退款原因包含'不喜欢'且金额<50,或者平台是淘宝且退款原因是'七天无理由'”,用图形化的嵌套判断来表达就很吃力,逻辑关系稍复杂就容易出错。

换成Python的if-elif-else,逻辑层次清晰,所有条件平铺直叙,维护起来就像看一段文字说明。更进一步,如果规则多到十几条,连if-elif也会变得冗长,这时用字典映射能把它变成一张表,规则和动作一目了然。

picture.image

字典映射的思路: 把每条规则表示为一个条件函数,和一个对应的动作函数或值。用循环遍历所有规则,找到第一个满足条件的就执行对应动作并跳出。这其实就是前面流程设计模式文章里提到的“责任链”的简化版,只不过用Python内置的数据结构实现,不涉及影刀子流程嵌套。

实战场景:多平台退款自动决策引擎

picture.image

假设我们需要根据退款信息决定处理方式,规则如下:

  1. 如果退款金额大于200元,不管什么原因,一律转人工。

picture.image 2. 如果退款原因为“质量问题”或“假货”,转人工并紧急告警。

  1. 如果平台是拼多多且退款原因包含“不喜欢”且金额小于30元,自动同意退款。
  2. 如果平台是淘宝且退款原因是“七天无理由”,自动同意退款。
  3. 其他情况转人工。

picture.image

用影刀判断指令实现,至少三层嵌套。用Python,可以写成规则列表,由引擎处理。

在影刀里调用Python规则引擎的完整代码

picture.image

# 输入变量映射:
# refund_info: 退款信息字典,包含 {'平台':'拼多多', '退款原因':'不喜欢/拍错', '金额':25.5, '退款类型':'仅退款'}

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/b0ccdcd478e04165b379dafb7e0be7ff~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783653802&x-signature=D%2FD6fy2WqvWI50ZOUoAFXOUlbdY%3D)

# 定义规则处理动作
def action_auto_agree(info):
    return "自动同意", "匹配自动退款规则"
    
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/0cd1fa0344b849a7ab05d01a514d0b39~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783653802&x-signature=Y0KuWdsvyntZciBV2UoHAxPb9M0%3D)

def action_manual(info):
    return "转人工", "未匹配自动规则"

def action_manual_alert(info):
    return "转人工", "质量问题或假货,需紧急处理"

# 规则列表,每个规则是一个字典,包含条件函数和动作函数
rules = [
    {
        'condition': lambda info: info.get('金额', 0) > 200,
        'action': action_manual,
        'reason': '金额超过200元'
    },
    {
        'condition': lambda info: any(w in info.get('退款原因','') for w in ['质量问题','假货']),
        'action': action_manual_alert,
        'reason': '涉及质量问题或假货'
    },
    {
        'condition': lambda info: info.get('平台') == '拼多多' and '不喜欢' in info.get('退款原因','') and info.get('金额',0) < 30,
        'action': action_auto_agree,
        'reason': '拼多多不喜欢原因且金额<30'
    },
    {
        'condition': lambda info: info.get('平台') == '淘宝' and '七天无理由' in info.get('退款原因',''),
        
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/d72ab66bf831459d85cce1d3320508a5~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1783653802&x-signature=WQhmZOY11yMkAkDPsVYvL00BZPw%3D)
        'action': action_auto_agree,
        'reason': '淘宝七天无理由'
    }
]

# 规则引擎:遍历规则,返回第一个匹配的决策
decision = "转人工"
decision_reason = "未匹配任何规则"
for rule in rules:
    if rule['condition'](refund_info):
        decision, decision_reason = rule['action'](refund_info)
        # 可附带规则原因
        break

# 输出变量:decision, decision_reason

对非技术背景的解释:

  • rules 列表就像一个Excel表格,每一行是一条规则。
  • condition 是条件,lambda 后面是判断逻辑,用 info 代表传入的退款信息。
  • action 是满足条件后执行的动作函数,返回决策结果和原因。
  • 引擎从上到下逐条检查,命中的第一条就执行并停止。

如果你不想用lambda函数,也可以用更直白的写法,把条件写成一个单独的函数,然后在规则里引用。比如:

def rule_pdd_small_amount(info):
    return info.get('平台') == '拼多多' and '不喜欢' in info.get('退款原因','') and info.get('金额',0) < 30

rules = [
    {'condition': rule_pdd_small_amount, 'action': action_auto_agree, 'reason': '拼多多不喜欢且金额<30'},
    ...
]

对于刚接触Python的运营同学,这种写法比lambda更容易理解,规则函数名本身也是文档。

在影刀流程中如何使用这个引擎

  1. 在采集到一条退款单的信息后,将这些信息拼成一个影刀字典变量(或者直接用Python脚本块的输入变量映射,把几个独立变量传入Python后在代码里拼成字典)。
  2. 拖入“执行Python脚本”,把规则引擎代码放进去,输入影刀的退款信息变量,输出 decisiondecision_reason
  3. 在主流程里,根据 decision 的值用一个简单的“判断”指令来决定后续动作:如果等于“自动同意”,走自动同意子流程;如果等于“转人工”,记录并跳过。

这样,主流程里不再有任何复杂的业务判断嵌套,只有一个“判断决策结果等于什么”的单一条件。所有业务规则的复杂度都被封装在Python脚本里。运营要加一条新规则,只需要在Python的 rules 列表里添加一个元素,不需要动影刀的流程结构。这对于非技术背景的维护者也更安全,因为修改字典比在图形化界面里拖动分支线出错概率低得多。

更进一步:用Excel配置规则,Python动态读取

规则少的时候写在Python代码里没问题,但运营经常需要调整规则,每次都改Python脚本还是麻烦。终极方案是规则完全由Excel配置,Python动态加载。结合前面配置驱动模式文章,这很容易实现。

Excel规则表结构:

平台退款原因包含金额上限动作优先级
拼多多不喜欢30自动同意1
淘宝七天无理由100自动同意2
所有质量问题,假货999999转人工并告警0
所有200转人工0

在Python里读取这个Excel(用Pandas或影刀数据表格变量传入),每一行构造一个规则,添加到 rules 列表中。优先级的处理:按优先级排序,优先级高的规则先判断。这样运营就可以自己维护规则Excel,完全不用打开影刀编辑器。

# 从配置表动态生成规则(简化示例)
import pandas as pd

# df_rules 是影刀传入的规则数据表格
rules = []
for _, row in df_rules.iterrows():
    platform = row['平台']
    reasons = [r.strip() for r in str(row['退款原因包含']).split(',') if r.strip()]
    amount_limit = row['金额上限']
    action_type = row['动作']
    
    def make_condition(p, r_list, limit):
        def condition(info):
            if p != '所有' and info.get('平台') != p:
                return False
            if r_list:
                if not any(r in info.get('退款原因','') for r in r_list):
                    return False
            if limit and info.get('金额', 0) > limit:
                return False
            return True
        return condition
    
    def make_action(act):
        if act == '自动同意':
            return lambda info: ("自动同意", "配置规则")
        elif act == '转人工并告警':
            return lambda info: ("转人工", "告警")
        else:
            return lambda info: ("转人工", "配置规则")
    
    rules.append({
        'condition': make_condition(platform, reasons, amount_limit),
        'action': make_action(action_type),
        'priority': row.get('优先级', 10)
    })

# 按优先级排序
rules.sort(key=lambda r: r['priority'])

这样,整个退款决策逻辑就成了一个可配置的子系统。运营增加平台、修改阈值,都不需要懂Python,只改Excel即可。

不止退款:字典映射模式的其他应用场景

这种“用Python字典或列表替代复杂条件判断”的模式,在电商自动化里还有很多用武之地:

  • 多平台订单状态映射:拼多多的“待发货”=淘宝的“等待发货”=抖音的“待处理”,统一为内部状态码,一个字典完成转换。
  • 动态XPath选择:根据商品所在平台,映射出对应的XPath。xpath_map = {'拼多多':'//h3', '淘宝':'//h1[@class="title"]'},一句代码取出。
  • 错误处理策略:不同错误信息映射到不同的处理函数,类似前面责任链的简化版。

掌握这个模式后,你会发现很多原本需要在影刀界面里用大量“判断”指令堆出来的分支逻辑,都可以浓缩到一个Python脚本里,流程的简洁性和可维护性上一个大台阶。


常见问题速查

问题现象原因解决方法
规则没生效,全部走了默认条件函数有Bug,或字典传参有问题在Python里print(info)看传入的数据,检查条件逻辑
修改Excel规则后流程没变化流程未重新读取Excel确保每次执行都读取配置,不缓存
规则变多后变慢大量规则顺序匹配按优先级排序,热门规则放前面
lambda表达式语法报错缩进或冒号写错换用独立函数,更直观

推荐资源: 如果对Python的函数、字典还不太熟,推荐看廖雪峰的Python教程中的“函数”和“高级特性”章节,浅显易懂。影刀官方社区的“Python高级应用”板块有用户分享的规则引擎完整实现。把这个模式学会,你就从“会用影刀”升级到了“会设计自动化逻辑”,非技术背景一样可以写出清晰、灵活、好维护的复杂流程。


#影刀RPA #RPA自动化 #Python协同 #条件判断 #流程设计

作者:林焱

本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论