场景导入:别让“脏数据”拖垮你的自动化流程
兄弟们,大家好,我是 N8N大学 的主编。今天咱们聊点实在的。

做自动化的兄弟一定深有体会:数据从第三方 API、Webhook 或者爬虫过来的时候,往往是一身“脏衣服”。要么前后带着多余的空格,要么混杂着看不懂的换行符,要么名字和邮箱挤在一起。直接用?轻则字段解析失败,重则整个流程卡死。
手动去改?那还叫自动化吗?那是给自己找罪受。今天,笔者就带大家深入 N8N 的 Code 节点,用最简单的 JavaScript 原生方法——.split()、.replace() 和 .trim(),把数据洗得干干净净。
核心武器:Code 节点里的三板斧
在 N8N 里,Code 节点**(或者 Function 节点)是数据处理的最后一道防线,也是最强的微操工具。别怕写代码,我们只用三个最简单的字符串方法。
1. .trim():强迫症的福音
这是最基础的清洗动作。用户手滑多敲的空格、系统生成的换行,统统干掉。
场景: 用户提交的表单里,邮箱 " user@example.com " 根本无法校验。
写法:
const dirtyInput = " user@example.com ";
const cleanInput = dirtyInput.trim();
// 结果:"user@example.com"
在 N8N 的 Code 节点里,你可以直接针对输入的 JSON 字段操作:
item.json.email = item.json.email.trim();
2. .split() 与 .join():拆解与重组大师
当你遇到“张三,李四,王五”这种数据时,.split() 就是你的一把手术刀。它能按指定字符把字符串切开,变成一个数组。
场景: 清洗掉字符串里的所有空格。
写法:
const str = "Hello World";
const cleaned = str.split(' ').join(' ');
// 结果:"Hello World" (中间只剩一个空格)
或者处理复杂的全角/半角符号混合问题:
const rawName = "张三,李四";
const nameArray = rawName.split(','); // 按中文逗号切分
3. .replace():乾坤大挪移
这是最强大的方法,用于替换。它支持普通字符串,也支持正则表达式(Regex)。
场景: 去掉字符串里所有的非数字字符,只留电话号码。
写法:
const phone = "Tel: 138-0000-0000";
const cleanPhone = phone.replace(/D/g, '');
// 结果:"13800000000"
这里的 /D/g 就是正则的威力,D 代表非数字,g 代表全局匹配。在 N8N 里,处理这种脏数据,这一行代码顶得上手动删半小时。
实战演练:在 N8N 中清洗“姓名+邮箱”的混合字段
假设我们收到一个 CSV 导入的数据,字段 raw_info 长这样:
" User Name "
我们的目标是提取出纯净的 name 和 email。
步骤一:安装与拖拽
拖入一个 Code 节点**。确保你的上游节点(比如 Spreadsheet File 或 Webhook)已经把数据传过来了。
步骤二:编写清洗逻辑
在 Code 节点的 JavaScript 编辑器里,我们写入如下逻辑。这是 N8N 大学总结的实战模板:
for (const item of $input.all()) {
// 1. 先去除首尾空格
let raw = item.json.raw_info.trim();
// 2. 提取名字 (假设名字在 < 之前)
// 使用 .split('<') 将字符串切成两段
let namePart = raw.split('<')[0].trim();
// 3. 提取邮箱 (利用 .replace 去掉尖括号)
let emailPart = raw.split('', '').trim();
// 4. 赋值给新字段
item.json.clean_name = namePart;
item.json.clean_email = emailPart;
return item;
}
解析: 我们先用 .trim() 扫除外围垃圾,再用 .split() 按照 "<" 把字符串切开,最后用 .replace() 去掉收尾的 ">"。一套连招,数据瞬间规范。
步骤三:调试与验证
点击 Code 节点,查看右侧的 JSON/Preview 面板。你会发现多出了 clean_name 和 clean_email 字段。如果这里报错了,通常是你上游数据里没有 raw_info 字段,或者字段类型不对(比如是 null)。
避坑指南:实战中的 3 个致命细节
笔者在做项目时,因为数据清洗没做好,也踩过不少坑。这里分享两个最常见的:
1. null 值导致的“红屏”
如果你的字段可能是空的(null),直接调用 item.json.field.trim() 会报错:
Cannot read property 'trim' of null
解决方案: 加上防御性编程。
item.json.field = (item.json.field || "").trim();
这样即使数据为空,也会转成空字符串处理,不会阻断流程。
2. 正则表达式里的“转义”地狱
如果你要用 .replace() 去处理特殊字符,比如点号 . 或者加号 +,一定要记得加反斜杠转义。
错误写法: str.replace('.txt', '') (如果字符串里有两个 .txt,可能只替换第一个,取决于浏览器实现)
正确写法: str.replace(/./g, '') (把所有点都换掉)
3. 忽略大小写
有时候数据里 Email 是大写的,或者首字母大写的。用 .replace() 时加上 ignore case 标志。
写法: str.replace(/hello/gi, 'hi') (g: 全局, i: 忽略大小写)
FAQ 问答
Q: 除了 Code 节点,N8N 有没有不用写代码的清洗方法?
A: 有的。N8N 新版的 Set 节点**(或者 Transform 节点)提供了一些基础的字符串操作,但功能有限。对于复杂的正则提取、拆分,Code 节点依然是最高效的选择。笔者建议,想进阶一定要掌握基础 JS。
Q: .split() 和 .match() 哪个更适合提取数据?
A: 如果是固定分隔符(如逗号、空格),用 .split() 更快更直观;如果是提取特定模式的文本(如提取所有网址),配合正则的 .match() 更强大。N8N大学 建议先学会 split,再进阶 match。
Q: 清洗后的数据怎么导出给 Excel?
A: 在 Code 节点处理完数据后,接一个 Spreadsheet File 节点**,选择“写入”模式,映射好你清洗后的字段(如 clean_name, clean_email),就能导出完美的 Excel 表格了。
总结与资源
数据清洗是自动化的基石。.trim() 处理空格,.split() 拆解结构,.replace() 替换垃圾。这三板斧在 N8N 的 Code 节点里配合使用,能解决 90% 的文本清洗需求。
不要害怕代码,它们只是你驯服数据的工具。我是 N8N大学 的主编,希望这篇干货能帮你解决实际问题。去试试吧,把那些脏数据洗得像刚出厂一样!