#!/usr/bin/perl -w
use strict
use Text::CSV
use Spreadsheet::WriteExcel
die("Usage: $0 [input filename(s)]\n") if (scalar @ARGV == 0)
my $xl = Spreadsheet::WriteExcel->new('output.xls')
foreach my $filename (@ARGV) {
my $csv = Text::CSV->new
my $wsname = $filename
$wsname =~ s/.csv//g
$wsname =~ s/-/ /g
my $ws = $xl->add_worksheet($wsname)
my $row = 1
open FH, $filenamewhile () {
$csv->parse($_)
my @fields = $csv->fields
$ws->write("A$row", \@fields)
$row++
}close FH
}
Qcsv文件本质上还是属于文本文件,在Linux中转换文本文件的编码可以使用iconv命令,iconv命令很简单,记住它的三个参数就可以了,下面是它的三个参数:
-f参数:表示from,就是原本的编码格式
-t参数:表示to,就是后来的新编码
-o参数:表示输出文件,就是转换编码后的新文件的文件名,如果没有这个参数新文件会将原来的文件覆盖掉。
下面是将GB2312编码的文本文件转换成UTF-8编码的例子:
iconv -f gb2312 -t utf8 mygb2312.txt -o myutf8.txt
这个例子中mygb2412.txt就是要转换的文件,myutf8.txt就是转换后的新文件。如果是批量转换,可以写一个简单的shell脚本,非常容易就能实现的。dataframe可以使用to_csv方法方便地导出到csv文件中,如果数据中含有中文,一般encoding指定为”utf-8″,否则导出时程序会因为不能识别相应的字符串而抛出异常,index指定为False表示不用导出dataframe的index数据。
评论列表(0条)