用Text::CSV_XS模块处理csv文件

#!/usr/bin/perl
# 测试csv 文件
# 需求:
# 从csv 文件中抽取id,song_title,ARTIST_NAME,LRC_TEXT
#------------------------模块定义------------------------
use 5.014;                       #自动打开 strict
use utf8;                        #打开源代码的 utf8 flag
use FindBin qw($Bin);            #当前目录
use Text::CSV::Encoded;          #csv 解析
#--------------------解析csv 文件-------------------------
my @rows;
my $csv = Text::CSV::Encoded->new ({
     encoding_in  => "gb2312", # the encoding comes into   Perl
     encoding_out => "gb2312", # the encoding comes out of Perl
     });

#$csv = Text::CSV::Encoded->new ({ encoding  => "utf8" });

open my $fh, "<", "$Bin/res/song.csv" or die "song.csv: $!";

while ( my $row = $csv->getline($fh) ) {

    my @lines = @{$row}[0,1,7,3];
    push @rows, \@lines;

}
$csv->eof or $csv->error_diag();
close $fh;

$csv->eol("\r\n");
$csv->quote_char('"');
$csv->always_quote(1);
open $fh, ">", "$Bin/res/new.csv" or die "new.csv: $!";
$csv->print( $fh, $_ ) for @rows;
close $fh or die "new.csv: $!";

默认的设置

   $csv = Text::CSV_XS->new ({
     quote_char            => '"',
     escape_char           => '"',
     sep_char              => ',',
     eol                   => $\,
     always_quote          => 0,
     quote_space           => 1,
     quote_null            => 1,
     quote_binary          => 1,
     binary                => 0,
     keep_meta_info        => 0,
     allow_loose_quotes    => 0,
     allow_loose_escapes   => 0,
     allow_unquoted_escape => 0,
     allow_whitespace      => 0,
     blank_is_undef        => 0,
     empty_is_undef        => 0,
     verbatim              => 0,
     auto_diag             => 0,
     diag_verbose          => 0,
     });

转载于:https://www.cnblogs.com/tjxwg/archive/2013/04/08/3006623.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值