文档备案控制台
免费开始使用

影刀RPA进阶教程:Python代码指令做数据清洗——正则提取与字符串处理

影刀自带的指令能处理大部分场景,但遇到复杂的数据清洗——比如从“【限时抢购】连衣裙¥99.9”里提取价格、去掉括号、拆出规格——用Python代码指令更顺手。

Python代码指令就是让你在影刀里直接写Python,处理完把结果返回给影刀变量。

picture.image

我也是非技术出身,Python只用几个固定的清洗套路,够用了。

一、Python代码指令的基本用法

picture.image

操作步骤

  1. 右侧指令面板搜索“Python代码”,拖入流程
  2. 点亮右上角的Python图标(社区版需要手动激活,否则报错)

picture.image 3. 在代码区写Python脚本

  1. 在底部“输入参数”区域,把影刀变量传进去(勾选“启用”)
  2. 在底部“输出参数”区域,设置要把哪个Python变量返回给影刀
  3. 运行后,影刀变量就能拿到处理后的数据

picture.image 示例:最简单的清洗——去掉价格里的“¥”符号

# 输入参数:price_raw = “¥99.9” (从影刀传入)
# 输出参数:price_clean

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/4cff7b39f8d24a689f2971ea4c27ac8a~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782610680&x-signature=3EkIDPCDWxPM4cPfbnapX0EzgkM%3D)

price_clean = price_raw.replace(“¥”, “”)
# price_clean 变成 “99.9”

picture.image

二、场景1:用正则表达式提取数字

场景:抓到的文本是“月销量1.2w件”,你要提取“12000”。

方法:用Python的re模块提取数字,再转换单位。

picture.image

操作步骤

  1. 拖入Python代码指令
  2. 输入以下代码

picture.image 3. 把销量文本作为输入参数传入

  1. 输出清洗后的数字
import re

# 输入:sales_text = “月销量1.2w件”
# 输出:sales_number (整数)

def clean_sales(text):
    # 提取数字和小数点
    match = re.search(r‘(\d+\.?\d*)’, text)
    if not match:
        return 0
    
    num = float(match.group(1))
    
    # 判断单位
    if ‘w’ in text.lower() or ‘万’ in text:
        num = int(num * 10000)
    elif ‘k’ in text.lower():
        num = int(num * 1000)
    else:
        num = int(num)
    
    return num

sales_number = clean_sales(sales_text)

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/3f8859f7a2b24cecaef8f3866200b400~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782610680&x-signature=lErTsVQv%2BxMzZLOelMLgS7O5UBw%3D)
# “1.2w” → 12000

常用正则规则(直接复制用)

提取目标正则表达式示例
整数\d+“123件” → 123
小数\d+\.\d+“99.9元” → 99.9
整数或小数\d+\.?\d*“99”或“99.9”都行
手机号1[3-9]\d{9}13812345678
中文[\u4e00-\u9fa5]+“连衣裙”

三、场景2:用split()拆分字符串

场景:SKU是“颜色:红色||尺寸:M”,要拆出“红色”和“M”。

方法:用两次split()。

# 输入:sku_raw = “颜色:红色||尺寸:M”
# 输出:color, size

# 第一步:按“||”分成两段
parts = sku_raw.split(“||“)
# parts = [”颜色:红色“, ”尺寸:M“]


![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/ffa8ab3558874e8dbfe6235d2bb56c11~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782610680&x-signature=HQS0dZmMWvCqN8Dh518VDsocRTU%3D)
# 第二步:取第一段,按”:”分割
color_part = parts[0].split(”:”)
color = color_part[1]  # “红色”

# 第三段:取第二段
size_part = parts[1].split(”:”)
size = size_part[1]  # “M”

一行写法(如果你懂列表推导)

color = sku_raw.split(“||“)[0].split(”:”)[1]

四、场景3:用strip()和replace()清理脏数据

场景:抓到的文本前后有空格、换行符,或者有多余符号。

常用方法

# 输入:title_raw = ”   【爆款】连衣裙  \n“
# 输出:title_clean

# 去掉首尾空格和换行
title_clean = title_raw.strip()
# 结果:”【爆款】连衣裙“

# 去掉中文括号
title_clean = title_clean.replace(“【”, ”“).replace(”】”, “”)
# 结果:“爆款连衣裙”

# 合并多个空格为一个空格
import re
title_clean = re.sub(r‘\s+’, ‘ ‘, title_clean)

五、场景4:从URL中提取参数

场景:商品链接是https://detail.tmall.com/item.htm?id=123456&sku=789,要提取id的值。

方法:用正则或字符串截取。

import re

# 输入:url = “https://detail.tmall.com/item.htm?id=123456&sku=789”
# 输出:item_id

# 方法一:正则匹配id=后面的数字
match = re.search(r‘id=(\d+)’, url)
if match:
    item_id = match.group(1)  # “123456”

# 方法二:用split和find(更稳定)
ifid=’ in url:
    start = url.find(‘id=’) + 3
    end = url.find(‘&’, start)
    if end == -1:
        end = len(url)
    item_id = url[start:end]

六、Python代码指令的输入输出配置

配置输入参数(把影刀变量传进Python):

在指令底部“输入参数”区域:

  • 参数名:sales_text(Python代码里用的变量名)
  • 参数类型:字符串
  • 参数值:选影道变量{采集到的销量文本}

配置输出参数(把Python变量传回影刀):

在指令底部“输出参数”区域:

  • 参数名:sales_number(Python代码里的变量名)
  • 输出到:选或新建影道变量{清洗后销量}

注意:Python变量名和影道变量名可以不一样,系统会自动映射。

七、实战:一条复杂的清洗流程

假设你从拼多多抓到一条商品数据: “【限时5折】韩版修身连衣裙 ¥129.9 月销3.5w”

你要拆出:去掉括号的标题、价格数字129.9、销量数字35000。

完整Python代码

import re

# 输入:raw_text
# 输出:title_clean, price_num, sales_num

# 1. 提取标题(去掉【】内的内容)
title_clean = re.sub(r‘【.*?】’, ‘’, raw_text).strip()

# 2. 提取价格(¥后面的数字)
price_match = re.search(r‘¥(\d+\.?\d*)’, raw_text)
price_num = float(price_match.group(1)) if price_match else 0

# 3. 提取销量(月销xxx)
sales_match = re.search(r‘月销(\d+\.?\d*)(\w?)’, raw_text)
if sales_match:
    sales_val = float(sales_match.group(1))
    unit = sales_match.group(2)
    if unit == ‘w’:
        sales_num = int(sales_val * 10000)
    else:
        sales_num = int(sales_val)
else:
    sales_num = 0

常见问题/易错速查

问题原因解决方法
Python代码报“模块不存在”忘了点亮Python图标指令右上角的Python图标要点亮
输入参数传不进去输入参数的变量名拼写错误检查大小写,Python是区分大小写的
输出参数返回None代码里定义的变量名和输出参数名不一致保持完全一致
re模块报错正则表达式写错了在线正则测试网站先验证
中文乱码编码问题在代码头部加 # -*- coding: utf-8 -*-

推荐资源

Python正则练习网站:regex101.com,选Python风格,贴文本写正则实时看匹配结果。

影刀官方文档:搜索“Python代码指令”,有视频讲解输入输出配置。

我常用的Python清洗模板(保存为子流程,反复用):

  • C_清洗价格:输入“¥99.9” → 输出 99.9
  • C_清洗销量:输入“1.2w” → 输出 12000
  • C_去除括号:输入“【爆款】连衣裙” → 输出“连衣裙”

最后说一句
Python代码指令是影刀里性价比最高的功能——学习成本低(会5个函数就够),但能解决80%的清洗问题。我自己的流程里,采集完数据后一定会跟一个Python代码指令做清洗,再写入Excel。这样表格里的数据直接能用,不用手工调。

记住三个核心函数:re.search()提取、split()拆分、replace()替换。够用了。

作者:林焱

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

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