【问题标题】:How do I handle embedded newlines in CSV files in Perl?如何在 Perl 中处理 CSV 文件中的嵌入换行符?
【发布时间】:2009-06-23 22:33:19
【问题描述】:

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

while ( <IN> ) { 
    ...
    }

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

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

或者我应该以不同的方式处理这个问题?

【问题讨论】:

    标签: perl csv newline


    【解决方案1】:

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

    【讨论】:

    • CSV 解析非常困难,除了最琐碎的代码(即,一旦您认为split ',', $line 可能出现问题,您就应该使用 CPAN。Text::CSV_XS 和Text::XSV 是您应该考虑的两个。由于惯性,我使用前者,但后者较新,可能更适合许多用途。
    • 我认为您的意思是您自己的答案,而不是对我的评论。
    • 有人告诉我这行不通,但我看到有一个可以设置的二元期权。我会试一试。感谢您的编辑。
    • @singingfish: ITYM Text::xSV。而Text::CSV_XS多年来一直停滞不前,但最近两年H.M.Brand接管了维护,做了很多工作(并发布了很多版本)。
    猜你喜欢
    • 2010-11-13
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多