跳到主要内容

数据清理管道

数据清理管道是九头虫 RPA 内置的数据处理引擎。它按顺序执行一系列预定义的操作符,对数据进行清洗、转换、格式化。

数据清理管道内置于以下组件的配置面板中,点击字段右下角的 👁 预览按钮即可打开,预览窗口中带有完整的处理函数列表:

  • 数据采集 — 列提取规则中,对采集到的每个字段值执行清洗
  • 设置变量 — 变量赋值前对值做预处理

在对应字段的「数据转换」区域中添加清洗步骤,按顺序执行。


执行逻辑

管道按步骤列表从上到下依次执行,前一步的输出是后一步的输入。

数据清洗

点击「添加处理方法」展开所有可用的处理函数:

添加处理方法


操作符参考

共 33 个操作符,按功能分为 7 类。

字符串处理

trim

移除字符串首尾空白字符。

参数
输入:" 订单号123 "
输出:"订单号123"

upper

将字符串转为大写。

参数
输入:"hello"
输出:"HELLO"

lower

将字符串转为小写。

参数
输入:"Hello"
输出:"hello"

replace

字符串替换。

参数类型说明
search文本要查找的子字符串
replace文本替换为的字符串(不填则删除匹配项)
输入:"¥1,234.00",search: "¥",replace: ""
输出:"1,234.00"

substring

截取子字符串。

参数类型说明
start数字起始索引
end数字结束索引(不含)
输入:"20240101",start: 0, end: 4
输出:"2024"

split

将字符串分割为数组。

参数类型说明
separator文本分隔符(支持正则)
输入:"张三,李四,王五",separator: ","
输出:["张三", "李四", "王五"]

正则处理

regexExtract

使用正则提取捕获组。

参数类型说明
pattern文本正则表达式模式
flagsstring[]可选标志,如 ["g", "i"]
index数字返回匹配结果数组中的第几个索引(默认 0)
输入:"订单号:2024-001",pattern: "\\d{4}-\\d{3}"
输出:"2024-001"

regexReplace

使用正则替换。

参数类型说明
pattern文本正则表达式模式
replace文本替换字符串(不填则删除)
flagsstring[]可选标志
输入:"价格:99元",pattern: "\\d+",replace: "0"
输出:"价格:0元"

regexExtractEmail

提取文本中的所有邮箱地址。

参数
输入:"联系 sales@example.com 或 support@test.org"
输出:["sales@example.com", "support@test.org"]

regexExtractPhone

提取文本中的电话号码。

参数类型说明
country文本国家代码,如 CNUS
输入:"请致电 13812345678",country: "CN"
输出:["+8613812345678"]

数组处理

join

将数组元素连接为字符串。

参数类型说明
separator文本元素之间的分隔符
输入:["张三", "李四", "王五"],separator: "、"
输出:"张三、李四、王五"

unique

数组去重。

参数
输入:["A", "B", "A", "C", "B"]
输出:["A", "B", "C"]

sort

数组排序。

参数类型说明
order文本asc — 升序;desc — 降序
输入:[3, 1, 2],order: "asc"
输出:[1, 2, 3]

flatten

将多维数组拍平为一维。

参数
输入:[[1, 2], [3, [4, 5]]]
输出:[1, 2, 3, 4, 5]

场景:数据采集时由于 DOM 嵌套导致结果变为二维数组,用 flatten 展平后可继续用 trim 等标量操作。

compact

移除数组中的假值(nullundefined、空字符串、0false)。

参数
输入:["A", "", null, "B", undefined]
输出:["A", "B"]

reverse

反转数组元素顺序。

参数
输入:[1, 2, 3]
输出:[3, 2, 1]

first

取数组第一个元素。

参数
输入:["张三", "李四", "王五"]
输出:"张三"

last

取数组最后一个元素。

参数
输入:["张三", "李四", "王五"]
输出:"王五"

at

按索引取数组元素(支持负索引)。

参数类型说明
index数字索引,负数从末尾倒数
输入:["A", "B", "C"],index: -1
输出:"C"

类型转换

toNumber

将字符串转为数字。

参数
输入:"¥1,234.56"
输出:1234.56

机制:移除所有非数字、非小数点、非负号的字符后用 parseFloat 解析。

currency

提取货币金额,等价于 toNumber

参数
输入:"$99.99"
输出:99.99

toString

显式转为字符串。

参数
输入:1234
输出:"1234"

toBoolean

转为布尔值。

参数
输入:0 → false
输入:1 → true
输入:"hello" → true

jsonParse

将 JSON/JSON5 字符串解析为对象。

参数
输入:'{"name":"张三","age":25}'
输出:{ name: "张三", age: 25 }

jsonStringify

将对象序列化为 JSON 字符串。

参数
输入:{ name: "张三", age: 25 }
输出:'{"name":"张三","age":25}'

日期处理

formatDate

将时间戳或日期字符串格式化。

参数类型说明
format文本dayjs 格式字符串
输入:1704067200000,format: "YYYY-MM-DD HH:mm:ss"
输出:"2024-01-01 08:00:00"
格式占位符含义示例
YYYY四位年份2024
MM月份(补零)01
DD日期(补零)15
HH小时 24 进制14
mm分钟30
ss05

timestamp

将日期字符串转为时间戳(毫秒)。

参数
输入:"2024-01-01"
输出:1704067200000

HTML 处理

stripHTML

移除所有 HTML 标签,保留纯文本。

参数
输入:"<p>订单金额:<strong>99元</strong></p>"
输出:"订单金额:99元"

URL 处理

ensureURL

验证并规范化 URL。无效 URL 返回 null

参数
输入:"https://example.com/path?q=1"
输出:"https://example.com/path?q=1"

输入:"not a url"
输出:null

ensureEmail

验证邮箱格式。无效邮箱返回 null

参数
输入:"test@example.com"
输出:"test@example.com"

输入:"not-email"
输出:null

urlParam

从 URL 中提取指定查询参数。

参数类型说明
key文本参数名
输入:"https://example.com?page=2&size=10",key: "page"
输出:"2"

urlDomain

从 URL 中提取域名。

参数
输入:"https://www.example.com/path"
输出:"www.example.com"

urlPath

从 URL 中提取路径部分。

参数
输入:"https://example.com/order/detail?id=1"
输出:"/order/detail"

管道配置

步骤开关

每个步骤都有一个开关,关闭时该步骤被跳过。适合调试时临时禁用某个清洗环节而不删除配置。

典型清洗链

原始数据:" <p>¥1,234.00</p> "

步骤 1: stripHTML → " ¥1,234.00 "
步骤 2: trim → "¥1,234.00"
步骤 3: currency → 1234.00

常见问题

对数组执行 trim 后数组变空了

现象:采集列表后添加 trim 步骤,结果数组变空。

原因:管道会自动对数组的每个元素应用 trim,不会导致数组变空。检查输入数组是否本身就是空的。

解决:在管道步骤前加一个「打印输出」节点确认数组的实际内容。

jsonParse 解析失败返回 null

现象:管道中加了 jsonParse 步骤后下游数据变成 null

原因:输入不是合法的 JSON(单引号、尾部逗号、未转义字符等),解析失败后返回 null 而非报错。

解决:九头虫 RPA 使用 JSON5 解析器,支持单引号、尾部逗号和注释。如果仍然解析失败,在开发者工具 Console 中测试 JSON5.parse('你的字符串') 确认格式问题。