数据清理管道
数据清理管道是九头虫 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 | 文本 | 正则表达式模式 |
flags | string[] | 可选标志,如 ["g", "i"] |
index | 数字 | 返回匹配结果数组中的第几个索引(默认 0) |
输入:"订单号:2024-001",pattern: "\\d{4}-\\d{3}"
输出:"2024-001"
regexReplace
使用正则替换。
| 参数 | 类型 | 说明 |
|---|---|---|
pattern | 文本 | 正则表达式模式 |
replace | 文本 | 替换字符串(不填则删除) |
flags | string[] | 可选标志 |
输入:"价格:99元",pattern: "\\d+",replace: "0"
输出:"价格:0元"
regexExtractEmail
提取文本中的所有邮箱地址。
| 参数 | 无 |
|---|
输入:"联系 sales@example.com 或 support@test.org"
输出:["sales@example.com", "support@test.org"]
regexExtractPhone
提取文本中的电话号码。
| 参数 | 类型 | 说明 |
|---|---|---|
country | 文本 | 国家代码,如 CN、US |
输入:"请致电 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
移除数组中的假值(null、undefined、空字符串、0、false)。
| 参数 | 无 |
|---|
输入:["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 |
ss | 秒 | 05 |
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('你的字符串') 确认格式问题。