做电商数据采集的时候,影刀RPA内置的指令能解决80%的问题,但剩下的20%——比如价格格式转换、时间戳解析、JSON嵌套数据提取——用内置指令处理起来步骤多、容易出错。我也是非技术背景,一开始看到“Python脚本”那个指令就绕道走,后来被逼着试了一次,才发现影刀里的Python用法不需要你会写完整程序,只需要会用现成的代码片段就行。
这篇文章不讲Python语法,只讲在影刀RPA里最实用的几个数据清洗场景:正则提取数字和日期、Pandas合并去重、JSON解析嵌套字段。每个场景都有可以直接复制修改的代码,你照着改自己的变量名就能用。
影刀里Python脚本指令怎么用,参数怎么传
在影刀的指令面板搜索“Python”,拖出“执行Python脚本”指令。双击打开编辑窗口,左边是代码区,右边是“输入变量”和“输出变量”的映射区。
最关键的规则:影刀变量和Python变量不是一回事。 你在流程里创建的{{商品标题}}变量,Python代码里不认。必须先在右侧“输入变量”里,把影刀变量映射一个Python变量名,比如把{{商品标题}}映射成title,然后在代码里用title来引用。
同样,代码里算出的结果想带回影刀流程,要在右侧“输出变量”里,把Python变量映射回影刀变量名。比如Python里算出了price_clean,映射成影刀的{{清洗后价格}}。
一个最简单的测试例子:
- 拖入“执行Python脚本”
- 输入变量里加一条:影刀变量
{{原始价格}}映射为Python变量raw_price - 代码区写:
price_clean = raw_price.replace('¥', '').strip()
- 输出变量里加一条:Python变量
price_clean映射为影刀变量{{清洗后价格}}
5. 点击运行,
{{清洗后价格}}就是去掉¥符号之后的结果
Python脚本指令需要点亮Python图标才能运行。 如果运行报“环境未配置”,去影刀设置里检查Python环境,创业版支持内置Python,社区版可能需要手动指定Python路径,这也是一个影刀版本差异。
场景一:用正则表达式批量清洗价格、销量、编号
电商数据里最常见的脏活:价格带“¥”和“起”、销量写成“1.2万+”、商品ID被Excel转成科学计数法。这些用正则表达式几行代码就能搞定。
import re
# 输入变量映射:

# raw_price: 原始价格文本,如 "¥9.9起", "¥12.8-18.5", "1.2万+"
# raw_sales: 原始销量文本,如 "已拼1.2万件", "100+人付款"
def clean_price(raw):
"""清洗价格,返回最低价格数值"""
raw = raw.replace('¥', '').replace(' ', '')
if '万' in raw:
num = re.findall(r'[\d.]+', raw)
return float(num[0]) * 10000 if num else 0.0
if '-' in raw:
parts = raw.split('-')
nums = re.findall(r'[\d.]+', parts[0])
return float(nums[0]) if nums else 0.0
nums = re.findall(r'[\d.]+', raw)
return float(nums[0]) if nums else 0.0
def clean_sales(raw):
"""清洗销量,返回整数"""
if '万' in raw:
num = re.findall(r'[\d.]+', raw)
return int(float(num[0]) * 10000) if num else 0
nums = re.findall(r'\d+', raw)
return int(nums[0]) if nums else 0
# 调用清洗函数
price_result = clean_price(raw_price)
sales_result = clean_sales(raw_sales)
然后把 price_result 和 sales_result 映射回影刀变量,直接写入Excel就是干干净净的数字了。
正则表达式 r'[\d.]+' 解释: \d 是数字,\. 是小数点,[]+ 表示匹配一个或多个这些字符。所以它能把“9.9”从乱糟糟的文本里精准抓出来。不用记这些语法,用的时候复制粘贴改参数就行。
场景二:用Pandas合并多个Excel并去重
每天采集的数据存成单独文件,月底要合并成一份总表,同时去掉重复的商品ID。手动操作繁琐且容易漏。影刀内置的Excel指令也能合并,但去重和格式保留不如Pandas灵活。
import pandas as pd
import os
from glob import glob
# 输入变量映射:
# folder_path: Excel文件存放的文件夹路径,如 "D:/采集数据/拼多多/"
# output_path: 合并后输出文件路径,如 "D:/采集数据/拼多多_月度汇总.xlsx"
# 读取文件夹下所有xlsx文件
all_files = glob(os.path.join(folder_path, "*.xlsx"))
df_list = []
for file in all_files:
df = pd.read_excel(file)
df_list.append(df)
# 合并所有DataFrame
merged_df = pd.concat(df_list, ignore_index=True)
# 按商品ID去重,保留第一次出现的记录
merged_df.drop_duplicates(subset=['商品ID'], keep='first', inplace=True)
# 写入Excel,保留原始格式
merged_df.to_excel(output_path, index=False, engine='openpyxl')
# 输出合并后的总行数和去重后行数
total_rows = len(merged_df)
几个值得注意的参数:
subset=['商品ID']:指定按哪一列去重,换成你表格里的列名keep='first':重复时保留第一条,改成'last'保留最后一条index=False:写入时不带行号,这很关键,否则Excel里会多一列序号engine='openpyxl':指定写入引擎,避免因为Excel格式问题报错
如果你的影刀流程需要先安装Pandas,在影刀的“执行Python脚本”里第一次运行时如果提示“No module named pandas”,在影刀设置里找到Python环境管理,安装pandas和openpyxl两个包。创业版内置环境一般已预装。
场景三:解析JSON嵌套数据,提取多层字段
很多平台的API返回数据、或者网页里嵌入的JSON数据,是嵌套结构的。比如飞书多维表格读取出来的某列存的是JSON字符串,或者TikTok Shop接口返回的数据里,商品变体信息在深层字段里。用影刀内置指令一层层拆很痛苦,Python的json库一行搞定。
import json
# 输入变量映射:
# json_str: 待解析的JSON字符串,可能是接口响应或单元格内容
# 解析JSON
data = json.loads(json_str)
# 假设数据结构是:
# {"code":0, "data": {"items": [{"title":"商品A", "skus":[{"price":10.5, "stock":100}]}]}}
# 我们要提取所有SKU的价格和库存
items = data.get('data', {}).get('items', [])
sku_list = []
for item in items:
title = item.get('title', '')
for sku in item.get('skus', []):
sku_list.append({
'商品标题': title,
'价格': sku.get('price', 0),
'库存': sku.get('stock', 0)
})
# 将结果转换为列表的列表,方便影刀写入Excel
result = [[d['商品标题'], d['价格'], d['库存']] for d in sku_list]
result 是一个二维列表,映射回影刀后,可以直接用“遍历列表”逐行写入Excel,或者转成数据表格变量后批量写入。
一个容易踩坑的地方: 如果JSON字符串来自网页源码,里面可能有转义字符(比如\"),json.loads() 会报错。可以先打印出来看看,必要时用 json_str.replace('\\"', '"') 处理一下再解析。
Python代码调试的小技巧:用输出日志看中间结果
在影刀的Python脚本编辑窗口里写代码,不像IDE那样能逐行调试。如果结果不对,最有效的排查方法是用 print() 把中间变量打出来,影刀会把这些输出显示在运行日志里。
print("原始价格:", raw_price)
price_result = clean_price(raw_price)
print("清洗后:", price_result)
流程运行后,在影刀的“输出”面板里就能看到这些打印信息,快速定位哪一步出了问题。调试完确认没问题了,再把调试用的print注释掉或删掉。
Python协同常见错误速查
| 错误提示 | 原因 | 解决 |
|---|---|---|
| ModuleNotFoundError: No module named 'pandas' | Python环境未安装Pandas | 影刀设置里安装依赖包 |
| NameError: name 'xxx' is not defined | 输入变量未映射或Python变量名拼错 | 检查右侧输入变量映射和代码里变量名一致性 |
| json.decoder.JSONDecodeError | 字符串不是合法JSON,可能含转义或HTML | 打印字符串检查,手动清理后再解析 |
| 返回值为None | 函数有return但忘了映射输出变量 | 确认输出变量列表里包含了函数返回值 |
推荐资源: 影刀官方社区有用户整理的“Python数据清洗常用代码片段合集”,收录了电商场景下十几个高频清洗函数,直接搜索就能找到。另外,正则表达式入门推荐“regex101”这个在线工具,把原始文本粘进去,写正则表达式能实时看到匹配结果,非技术背景上手很快。
#影刀RPA #RPA自动化 #Python #数据清洗 #电商自动化
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
