【问题标题】:New lines in tab delimited or comma delimtted output制表符分隔或逗号分隔输出中的新行
【发布时间】:2011-03-06 13:38:21
【问题描述】:

我正在寻找一些关于处理 csv 和制表符分隔文件的最佳做法。

对于 CSV 文件,如果值包含逗号或双引号,我已经在进行一些格式化,但如果值包含换行符怎么办?我应该保持新行不变并将值用双引号括起来+转义值中的任何双引号吗?

制表符分隔文件的问题相同。我假设答案会非常相似,如果不一样的话。

【问题讨论】:

    标签: text formatting csv standards tsv


    【解决方案1】:

    通常你保持\n 不变,同时利用换行符将包含在" " 字符串中的事实。这不会造成歧义,但如果您必须使用普通的文本编辑器查看文件,那真的很难看。

    但这是你应该做的,因为除了双引号本身之外,你不会转义 CSV 中字符串内的任何内容。

    【讨论】:

    • 感谢您的快速回答!这就是我的想法,我只是想与其他人核实以确保
    【解决方案2】:

    @Jack 是对的,最好的办法是保持 \n 不变,因为如果是这种情况,您会期望它包含在双引号中。

    与大多数事情一样,我认为这里的一致性是关键。据我所知,您的值仅在跨越多行、包含逗号或包含双引号时才需要双引号。在我见过的一些实现中,所有值都被转义和双引号,因为它使解析算法更简单(从来没有转义和双引号的问题,而读取 CSV 则相反)。

    这不是最优化空间的解决方案,但是对于您自己的库和将来可能使用它的其他人来说,读取和写入文件是一件小事。

    【讨论】:

      【解决方案3】:

      对于 TSV,如果您想要无损表示值,“线性 TSV”规范值得考虑:http://paulfitz.github.io/dataprotocols/linear-tsv/index.html

      出于显而易见的原因,大多数此类约定至少遵循以下几点:

         \n for newline,
         \t for tab,
         \r for carriage return,
         \\ for backslash
      

      一些工具为 NUL 添加了\0

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 2020-04-27
        相关资源
        最近更新 更多