【问题标题】:perl Text::CSV_XS removes all escape_charsperl Text::CSV_XS 删除所有 escape_chars
【发布时间】:2013-09-02 12:42:46
【问题描述】:

由于数据中的换行问题,我已从 Text::CSV 移至 XS 版本 Text::CSV parsing when data contains newline

Text::CSV_XS 删除数据中的所有转义字符 (我正在使用带有 perl 5.8.8 的 linux) 这是示例代码(如下)

我希望第 3 行的属性在转义 1 \ 后应该是 \N,但是 Text::CSV_XS 会同时删除 \

use strict;
use warnings;
use Text::CSV_XS;

my $csv = Text::CSV_XS->new({
    binary => 1,
    eol => "\n",
    quote_char => '"',
    escape_char => '\\',
    auto_diag => 2,
    allow_loose_escapes => 1,
}) or die "Can't create CSV parser";

while( my $row = $csv->getline(\*DATA) ) {
    print join(" ",@{$row})."\n";
}

__DATA__
ata,atb,atc
1a,"1b                                                                                                                                         
1b-continued",1c
\\N,2b,2c

这是输出

ata atb atc
1a 1b
1b-continued 1c
N 2b 2c

【问题讨论】:

  • 如果你设置了escape_char => '\\',它只会删除反斜杠。我想知道您是否没有误解该选项的作用。

标签: perl csv xs


【解决方案1】:

使用allow_unquoted_escape => 1(从 0.95 版开始可用)。

【讨论】:

  • 我认为此参数未在 XS 模块中实现我收到此错误 ` ` # CSV_XS ERROR: 1000 - INI - Unknown attribute 'allow_unquoted_escape' @ pos 0 Can't create CSV parser at parse1 line 6.
  • 你必须有旧版本
猜你喜欢
  • 2013-05-17
  • 1970-01-01
  • 2013-06-02
  • 2013-01-24
  • 2019-05-17
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 2016-01-14
相关资源
最近更新 更多