采集回来的数据,一半是脏的。
价格带“¥”符号,销量带“人付款”,日期是“3天前”这种格式。用影刀RPA自带的指令处理,写一堆条件判断,又长又容易错。
其实影刀RPA内置了Python执行环境,几行代码就能搞定这些脏数据。
下面把最常用的5个Python协同技巧拆开讲,都是电商采集后清洗的实战场景。
在影刀RPA中执行Python代码的两种方式
场景:采集到价格文本“¥29.90”,想转成数字29.9。
方法:用“执行Python代码”指令,直接写Python逻辑。
操作步骤:
- 在右侧指令面板搜索“执行Python代码”
2. 拖入流程,点击“编辑代码”
- 输入Python代码,用
return返回结果 - 输出变量设为
clean_price,后续指令引用
# 影刀RPA中执行Python:清洗价格
import re

raw_price = "¥29.90"
# 提取数字部分
price = re.findall(r'\d+\.?\d*', raw_price)
# 转成浮点数
clean_price = float(price[0]) if price else 0.0
return clean_price

注意:社区版30分钟/天,Python代码执行很快,但调试时尽量用创业版,避免额度耗尽。
正则提取:从杂乱文本中抓取关键数据
场景:采集到销量文本“1.2万人付款”,想提取数字12000。
方法:用Python的re模块,配合影刀RPA的“执行Python代码”指令。
# 影刀RPA中执行Python:提取销量数字
import re

raw_sales = "1.2万人付款"
# 匹配数字和单位
match = re.search(r'([\d.]+)(万?)', raw_sales)
if match:
num = float(match.group(1))
unit = match.group(2)
# 如果有“万”,乘以10000
sales = int(num * 10000) if unit == '万' else int(num)
else:
sales = 0
return sales
实测:正则提取比拼字符串快10倍,而且不容易漏。
数据清洗:Pandas处理缺失值与重复值
场景:采集了500条拼多多商品,有80条重复,价格列还有空值。
方法:用Pandas在影刀RPA里做清洗,比自带指令灵活。
# 影刀RPA中执行Python:Pandas清洗
import pandas as pd
# 读取采集数据
df = pd.read_excel('拼多多商品数据.xlsx')
# 按商品ID去重
df = df.drop_duplicates(subset=['商品ID'], keep='first')
# 删除价格为空的行
df = df.dropna(subset=['价格'])
# 价格列转数字类型
df['价格'] = pd.to_numeric(df['价格'], errors='coerce')
# 保存清洗后数据
df.to_excel('拼多多商品数据_清洗后.xlsx', index=False)
return len(df) # 返回清洗后的行数
| 清洗操作 | Pandas方法 | 影刀自带指令 |
|---|---|---|
| 去重 | drop_duplicates | 删除重复行 |
| 删空值 | dropna | 需循环判断 |
| 类型转换 | astype | 需逐行处理 |
| 批量替换 | replace | 需条件判断 |
日期时间处理:字符串转时间格式
场景:采集到发布时间“3天前”“2026-09-30”,格式不统一。
方法:用Python的datetime和dateutil解析。
# 影刀RPA中执行Python:统一日期格式
from datetime import datetime, timedelta
raw_date = "3天前"
if "天前" in raw_date:
days = int(raw_date.replace("天前", ""))
clean_date = (datetime.now() - timedelta(days=days)).strftime("%Y-%m-%d")
else:
clean_date = raw_date
return clean_date
重点:电商平台的日期格式五花八门,建议统一转成YYYY-MM-DD格式再写入Excel。
JSON解析:处理API返回的嵌套数据
场景:用HTTP请求拿到飞书API返回的JSON,需要提取records里的字段。
方法:用Python的json模块解析,配合影刀RPA的“提取JSON数据”指令。
# 影刀RPA中执行Python:解析飞书API返回
import json
response_text = '{"code":0,"data":{"items":[{"fields":{"商品标题":"测试A","价格":"29.9"}}]}}'
data = json.loads(response_text)
# 提取所有记录
items = data.get("data", {}).get("items", [])
result = []
for item in items:
fields = item.get("fields", {})
result.append({
"标题": fields.get("商品标题", ""),
"价格": fields.get("价格", "")
})
return result
避坑:嵌套层级深时,用.get()方法,不要用[],避免KeyError。
常见问题速查
| 问题 | 原因 | 解决 |
|---|---|---|
| Python代码报错 | 缩进错误 | 检查缩进 |
| 返回值为空 | 没写return | 加return语句 |
| 中文乱码 | 编码问题 | 加# -*- coding: utf-8 -*- |
| 社区版额度不够 | 30分钟/天 | 创业版无限制 |
| 魔法指令生成的代码跑不通 | 逻辑不完整 | 手动检查变量名 |
Q:魔法指令能生成Python代码吗?
A:影刀3.0的魔法指令可以对话式生成Python片段,但生成后要自己检查逻辑和变量名。
Q:Python代码能调用影刀RPA的变量吗?
A:可以。在“执行Python代码”指令中,直接引用影刀变量名即可,比如return 变量名。
推荐资源
- 影刀RPA官方学院“Python协同”专题课,免费
- 影刀社区搜索“数据清洗”,有Pandas处理模板
- Python官方文档
re模块和pandas模块,有完整示例
#影刀RPA #RPA自动化 #Python协同 #数据清洗 #正则提取
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
