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

# 影刀RPA零基础教程:从文本中提取数

影刀RPA零基础教程:从文本中提取数据的4种方法——正则/split/截取/JSON解析

从网页采集到的文本是“商品ID:SPU-123456 | 价格:99元”,要分别取出ID和价格。
问题:影刀自带的“字符串处理”指令有十几种,不知道用哪个。
答案:四种核心提取方法——按位置截取、按分隔符拆分、正则匹配、JSON解析。
按场景选,覆盖90%的文本提取需求。


一、四种方法对比

picture.image

方法适用场景示例优点缺点
截取字符串固定长度、固定位置取手机号前3位简单不灵活
split拆分有固定分隔符(逗号、竖线、空格)a,b,c → 拆成列表直观分隔符变化则失效

picture.image | 正则提取 | 有模式规律(数字、邮箱、价格) | 提取文本中所有数字 | 强大灵活 | 需要学正则语法 | | JSON解析 | 数据是JSON格式 | API返回的数据 | 结构化 | 需懂JSON |

选择顺序
先用split拆分(最快)→ 不行用正则 → 固定长度用截取 → 有JSON用解析。

picture.image


二、方法一:截取字符串——固定位置提取

picture.image 场景:订单号固定是“ORD”+8位数字,如“ORD12345678”,要取出数字部分。
或者日期“2024-01-15”要取出年份前4位。

影刀指令截取字符串(在“字符串处理”分类下)

picture.image 操作步骤

  1. 拖入“截取字符串”指令。
  2. 原文本:{order_no}(如“ORD12345678”)
  3. 开始位置:3(从第0个字符开始数,'O'是0,'R'是1,'D'是2,所以数字从3开始)
  4. 截取长度:8

picture.image 5. 输出到:{order_num}

# 示例配置
# 原文本:{order_no} = "ORD12345678"

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/1047c81340b244de9674bd73ae68f1b4~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782089784&x-signature=Ie48DLLiFHngqLShHSewGl3pqmE%3D)
# 开始位置:3
# 截取长度:8
# 输出:{order_num} = "12345678"

# 常见开始位置:0=第一个字符,负数表示从后往前(部分版本支持)

容易踩的坑:开始位置从0开始数,不是1。
测试方法:先用“输出日志”打印原文本长度,确保截取范围不越界。


三、方法二:split拆分——有分隔符时首选

场景:商品规格“颜色:红色|尺寸:L|材质:棉”,要提取“红色”。
或者CSV数据“手机壳,29.9,1000件”。

影刀指令拆分文本(输出列表)或字符串拆分(不同版本名称略有差异)

操作步骤

  1. 拖入“拆分文本”指令。
  2. 原文本:{spec} = “颜色:红色|尺寸:L|材质:棉”
  3. 分隔符:|(竖线)
  4. 输出到列表:{parts}
# 拆分后 {parts} = ["颜色:红色", "尺寸:L", "材质:棉"]

# 再取第一个元素“颜色:红色”,继续拆分:

![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/2a7683c19a7345bf8519c5e81394f14b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1782089784&x-signature=1dbxjvkUAuWWCPoOrMr5MI5BvFg%3D)
# 再次拆分文本,原文本取 {parts[0]},分隔符 “:”
# 输出列表 {color_parts},取 {color_parts[1]} 得到 “红色”

影刀里取列表元素
用“获取列表指定位置的元素”指令,位置0开始。

常用分隔符:逗号,、竖线|、分号;、空格 、换行符\n(在影刀里直接写\n


四、方法三:正则提取——最强大的万能方法

场景

  • 从“商品价格:¥99.00,活动价¥89.00”提取两个价格数字
  • 从一段文字里提取所有手机号
  • 提取HTML标签里的数字ID

影刀指令正则提取 或 用“Python代码”写正则(推荐后者,更灵活)

方法A:使用影刀自带的“正则提取”指令

  1. 拖入“正则提取”指令。
  2. 原文本:{text}
  3. 正则表达式:\d+\.?\d*(匹配数字和小数点)
  4. 匹配模式:第一个匹配(或所有匹配)
  5. 输出到变量。

方法B:用Python代码(更强大,推荐)

picture.image

picture.image

import re

text = get_var("product_info")  # "价格:¥99.00,库存:200件"

# 提取价格数字
price_match = re.search(r'¥(\d+\.?\d*)', text)
if price_match:
    price = float(price_match.group(1))
else:
    price = 0

# 提取库存数字(纯数字)
stock_match = re.search(r'库存:(\d+)', text)
if stock_match:
    stock = int(stock_match.group(1))
else:
    stock = 0

set_var("price_num", price)
set_var("stock_num", stock)

常用正则模式速查

目标正则表达式说明
整数\d+一个或多个数字
小数\d+\.?\d*整数或小数
手机号1[3-9]\d{9}11位手机号
邮箱[\w\.-]+@[\w\.-]+\.\w+简单邮箱匹配
价格符号+数字¥(\d+\.?\d*)括号表示提取数字
中文[\u4e00-\u9fa5]+匹配中文字符

在线测试正则:regex101.com(选Python风格)


五、方法四:JSON解析——处理API返回数据

场景:调用接口返回JSON字符串:
{"code":0,"data":{"name":"手机壳","price":29.9}},要取出name和price。

影刀指令解析JSON(在“字符串处理”或“扩展功能”中)

操作步骤

  1. 拖入“解析JSON”指令。
  2. JSON字符串:{json_str}
  3. 输出到变量:{json_obj}(字典类型)
  4. 用“获取字典的值”指令取数据:{json_obj['data']['name']}
# 如果影刀JSON解析指令不好用,用Python代码

import json

json_str = get_var("api_response")
data = json.loads(json_str)
name = data['data']['name']
price = data['data']['price']

set_var("product_name", name)
set_var("product_price", price)

注意:JSON键名区分大小写,"name""Name"不同。


六、实战组合:清洗一段商品详情文本

原始文本
商品:iPhone15 黑色 128GB | 价格:¥5999.00 | 月销:1.2万件 | 店铺:XX数码

目标:提取商品名、价格数字、月销数字。

方法:split拆分 + 正则提取

# 影刀指令流程

# 1. 拆分文本:分隔符 "|",输出列表 {parts}
#    {parts[0]} = "商品:iPhone15 黑色 128GB"
#    {parts[1]} = "价格:¥5999.00"
#    {parts[2]} = "月销:1.2万件"
#    {parts[3]} = "店铺:XX数码"

# 2. 取商品名:拆分 {parts[0]},分隔符 ":",取第二部分

# 3. 取价格数字:用正则提取 ¥(\d+\.?\d*)
#    或者拆分 {parts[1]},分隔符 "¥",取第二部分

# 4. 取月销数字:拆分 {parts[2]},分隔符 ":", 取第二部分得到 "1.2万件"
#    再用Python正则转数字(参考之前文章销量清洗)

七、影刀专属操作清单

操作精确指令位置
截取字符串截取字符串字符串处理
拆分文本拆分文本字符串处理
正则提取正则提取字符串处理(部分版本有)
解析JSON解析JSON扩展功能
获取列表元素获取列表指定位置的元素列表操作
获取字典值获取字典的值字典操作
Python代码Python代码扩展功能(推荐)

版本差异:社区版“正则提取”指令功能较弱(不支持分组捕获),建议直接用Python代码写正则。
创业版以上支持更完整的正则功能。


常见问题速查

问题原因解决方法
split拆分后列表为空分隔符写错(中英文符号)原文本中是中文冒号还是英文冒号?
截取字符串乱码开始位置算错用“输出日志”打印原文本,逐字符数
正则匹配不到正则表达式写错先在regex101测试
JSON解析报错字符串不是合法JSON用Python的json.loads捕获异常
提取数字时小数点丢失正则没写小数点\d+(\.\d+)?

推荐资源

  • 在线正则练习:regex101.com(选择Python)
  • 影刀学院课程:《字符串处理——提取数据的4种武器》(约15分钟)
  • Python字符串方法速查:str.strip()str.split()str.replace()

最后一句:文本提取的核心是“找到规律”。
有固定分隔符就用split,有数字/邮箱规律就用正则,固定位置用截取。
正则值得花一小时专门学,学会后效率翻倍。


作者:林焱

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

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