节点手册 · 计算

KNIME String Manipulation 文本处理用法

Manipulation → Column → Convert & Replace

对文本列做去空格、替换、截取、拼接。数据清洗里出场率极高 – 关联配不上、筛选筛不出、分组被拆成两组,多半都要靠它先收拾一遍。

它解决什么问题

写一个表达式,对某一列的每一行做同样的文本处理,结果输出成新列或覆盖原列。它是逐行算的,行数不变。

最高频的四个用途:去掉首尾空格、去掉千分位逗号和货币符号、截取编码的前几位、把几列拼成一列。

它在流程里的位置

CSV Reader读进来
String Manipulation去空格 / 清符号
String to Number转类型
Joiner关联

典型位置是在关联和类型转换之前。关联配不上、转数字报错,源头往往是文本里有看不见的空格或符号。

基本信息

英文原名String Manipulation
中文名称字符串处理(iModel 中文界面)
输入端口1 个数据表
输出端口1 个,行数不变
输出类型结果一律是文本。要数字必须再接一个转换节点

配置项逐条

  • Expression表达式

    在编辑框里写函数。引用列用 $列名$ 这种写法 – 双击左侧列名列表会自动插入,别手打,列名里有空格或中文时手打容易出错。

  • Function list函数列表

    左侧列出所有可用函数,选中会显示用法和示例。常用的几个:strip() 去首尾空格、replace() 替换、substr() 截取、join() 拼接、upperCase() 转大写、regexReplace() 按正则替换、length() 取长度。

  • Append column / Replace column追加新列 / 覆盖原列

    建议清洗阶段用追加,保留原值方便对照检查;确认没问题后再改成覆盖,或者用 Column Filter 把原列去掉。直接覆盖出了问题回不去。

String Manipulation 配置对话框
函数列表Function
strip · replace · substr · join · regexReplace · length 选中函数会显示参数说明和示例。
表达式Expression
strip($部门编码$) 列引用用 $列名$,双击左侧列名自动插入。四个最常用的写法见下面一节。
输出方式Append / Replace
追加新列覆盖原列 清洗阶段用追加,留着原值好对照。确认无误后再覆盖。

四个最常用的写法

要做的事表达式
去掉首尾空格strip($部门编码$)
去掉千分位逗号和货币符号replace(replace($原值$, ",", ""), "¥", "")
取编码前三位substr($资产编号$, 0, 3)
把两列拼成一列join($年份$, "-", $部门编码$)
函数可以嵌套。上面第二个例子就是两层 replace 套起来的。要处理的符号多时嵌套会很难读 – 那种情况建议拆成两个 String Manipulation 节点串着走,各做一件事,出问题也好定位。

三个常见坑

  1. 输出总是文本,忘了再转类型。用 replace 去掉千分位逗号之后,这一列还是文本,直接拿去求和会报错或结果异常。后面必须接 String to Number。这是最常见的一条。
  2. 缺失值参与运算结果还是空。某一行原本就是空值,任何函数作用在它上面结果仍然是空 – 不会报错,也不会变成空字符串。要先补值就用 Missing Value 节点先处理。
  3. 正则里的反斜杠要转义。regexReplace() 里写正则时,反斜杠需要写两次。写完先用少量数据验证,别直接全量跑 – 正则写错通常不报错,只是结果不对。

什么时候该换别的节点

情况换成
是数值计算不是文本处理Math Formula
要按条件分支输出不同的值Rule Engine,规则式比嵌套函数好读
要同时处理很多列、逻辑复杂Column Expressions,一个节点里写多个输出列
只是把一列按分隔符拆成几列Cell Splitter

表达式报错或结果不对

先确认列引用是双击插入的而不是手打的,再确认结果类型是不是还需要转换。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码