如何在Perl中处理CSV文件中的嵌入换行?

RH.*_*RH. 1 csv perl newline

我正在读一个在Excel中创建的.csv文件,第一行是列标题.一列标题包含嵌入的换行符.我想忽略那个换行符,但是逐行阅读,如:

while ( <IN> ) { 
    ...
    }
Run Code Online (Sandbox Code Playgroud)

将它视为一个新的行,这将破坏我的代码(我还没有写).我的方法是将第一行读入列标题数组,并以不同方式处理其余行.

可能有一个正则表达式我可以在某处使用while忽略换行符,除非它是最后一个新行吗?

或者我应该以不同的方式接近这个?

bri*_*foy 13

使用其中一个处理CSV的Perl模块,例如Text :: CSV_XS.其文档向您展示了如何处理嵌入式换行符.一般来说,您不想花时间编写另一个CSV解析器; 继续完成任务中更重要的部分!

  • CSV解析是非常困难的,对于除了最简单的代码之外的所有代码(例如,只要您认为"拆分",",$ line"可能会破坏,您应该使用CPAN.文本:: CSV_XS和文本: :XSV是你应该考虑的两个.我使用前者由于惯性,但后者更新,可能更好用于许多用途. (3认同)
  • @ingingfish:ITYM Text :: xSV.而Text :: CSV_XS多年来一直停滞不前,但在过去的两年里,HMBrand接管了维护工作,并做了大量的工作(并发布了很多版本). (3认同)