是否可以从NiFi中的CSV文件标题名称中删除空格?

时间:2018-09-20 15:25:51

标签: regex etl apache-nifi removing-whitespace

我有一个CSV文件,其中某些列名称中带有空格,而某些列名称中的字符之间没有空格。我想从所有具有空白的标题名称中删除空白。请帮忙。谢谢!

附加屏幕截图以供参考。示例:“名字” 我要“名字”

我正在使用 ReplaceText 处理器,在该处理器中,我在“搜索值”下传递了“ \ s ”以仅搜索标题行空白和替换值为空字符串。我的评估模式也是“逐行”。因此现在输出文件显示为 FirstName,LastNameshraddha,srivastavsanstuti,srivastav ,因此它以一行显示所有内容。我只希望将空白从标题行中删除,并且根本不要触摸/合并数据值。谢谢

请告诉我如何删除它们。谢谢!

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试以下 ReplaceText 配置:

搜索值

(.*)

替换价值

${'$1':replace(" ","")} //we are applying NiFi expression language replace function on the captured group.

字符集

UTF-8

最大缓冲区大小

1 MB

替换策略

Regex Replace

评估模式

Entire text //works with Line-By-Line mode also

enter image description here

有关NiFi表达式语言的更多详细信息,请参见this链接。

输入流文件:

First Name,Last Name
shraddha,srivastav
sanstuti,srivastav

输出流文件:

FirstName,LastName
shraddha,srivastav
sanstuti,srivastav

答案 1 :(得分:1)

您应该能够进行以下匹配:

/[\s]/g

它匹配所有空白。 然后只需替换为空字符串即可。 编辑

尝试以下方法:

/(?<!\n.+)[ ]/g

只有在没有换行符的情况下,它才会与空格匹配。换句话说,只有第一行会匹配。 再次,用空字符串替换。

答案 2 :(得分:1)

@Shu方向正确,但是问题在于文本中的所有空格都将被替换。为了只替换标题行中的空格,请在Shu的解决方案中进行更改:

  1. 搜索值:
  

(?s)(^ [^ \ n] *)(。* $)

  1. 替换价值:
  

$ {'$ 1':replace(“”,“”)} $ 2