【问题标题】:Deleting empty fields in pipe delimited printout in perl?在perl中删除管道分隔打印输出中的空字段?
【发布时间】:2013-06-10 17:05:07
【问题描述】:

我正在浏览文件的每一行,用正则表达式在每一行中寻找一些特定的东西,我想打印它,以便输出 .csv 文件的每一行只包含这些东西(thing1|thing2|thing3|thing4| ) 但是因为它是逐行通过的,所以我得到了类似

|||| 

然后

|||thing4|  

然后

|thing1||thing3|| 

而且我不知道如何删除空的管道分隔区域以将所有内容推到一起。帮忙?

【问题讨论】:

  • 喜欢第一行的thing1|thing2|thing3|thing4,第二行的thing1.1|thing2.1|thing3.1|thing4.1,等等。我只编程了大概两个星期。
  • @user2471806 您的问题是这样说的:“我想要 1,2,3,4 但由于某些原因,它变成了别的东西。我应该如何解决它?”你希望别人如何回答你的问题?显示输入和您拥有的代码。

标签: perl line pipe delimiter delimited


【解决方案1】:

你可以用正则表达式过滤它

$out =~ s/\|{2}/|/sg;

【讨论】:

  • 程序到目前为止有很多正则表达式来查找东西,然后它有命令(稍微解释一下) print OUT "$thing1|$thing2|$thing3|$thing4|\n";
  • 那么我究竟应该在哪里过滤 $out 的东西?
  • 针对"a|||b" 测试这个正则表达式。 /s 在这里没有任何目的。试试:s/\Q||/|/ while /\Q||/。这仍然会将一个完全空的记录减少为两个空字段。
猜你喜欢
  • 2010-09-17
  • 1970-01-01
  • 2014-04-27
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多