gpt4 book ai didi

perl - 在 Perl 中,如何导入示例 CSV,进行基本的文本操作,然后将其保存回 CSV?

转载 作者:行者123 更新时间:2023-12-05 01:15:14 26 4
gpt4 key购买 nike

决定尝试学习Perl,目前需要处理多个CSV文件。

要开始进行更高级的文本操作,我首先需要一个基本代码:

  • 导入本地 CSV
  • 进行基本的文本操作
  • 保存生成的更改值

导入/处理/导出应支持 1000+ 行和 20+ 列。将提供一个示例 CSV 文件,但请随时在您的答案中提供一个。

CSV 文件示例:

"EmployeeName","OfficeHistory","JobLevelHistory"
"John Smith",501,"Engineer"
"John Smith",601,"Senior Engineer"
"John Smith",701,"Manager"
"Alex Button",601,"Senior Assistant"
"Alex Button",454,"Manager"

如果您有任何问题,请告诉我 - 这将对我入门有很大帮助。我的主要关注点是文本操作,但除非我有办法输入数据并将其导出回文件,否则这些操作毫无意义。 另外,如果您对快速创建和调试文本操作有任何建议,那也会有很大帮助。(注意:目前使用应用程序来执行此操作,但需要更多控制,因此决定将 Perl试一试。)

最佳答案

使用 Text::CSV_XSText::CSV .

其他任何事情迟早都会让你发疯。 CSV 在实践中是一种不守规矩的格式,尽管已经制定了规则 (RFC 4180),但它们的定义有些事后,因此某些系统,尤其是 Microsoft,以不同的方式处理它们。 MS 确实先到了那里,但不同 MS 产品识别的 CSV 格式之间存在差异。


Rehash of Text::CSV 手册页

#!/usr/bin/env perl
use strict;
use warnings;
use Text::CSV;

my @rows;

# Read the CSV file
{
my $csv = Text::CSV->new()
or die "Cannot use Text::CSV ($!)";
my $file = "data.csv";
open my $fh, '<', $file
or die "Cannot open $file ($!)";

while (my $row = $csv->getline($fh))
{
push @rows, $row;
}
$csv->eof or $csv->error_diag();

close $fh
or die "Failed to close $file ($!)";
}

# Munge the data
{
foreach my $row (@rows)
{
foreach my $col (@{$row})
{
$col = uc($col);
}
print "\n";
}
}

# Write the data
{
my $csv = Text::CSV->new()
or die "Cannot use Text::CSV ($!)";
my $file = "output.csv";
open my $fh, '>', $file
or die "Cannot open $file ($!)";
$csv->eol("\n");
foreach my $row (@rows)
{

$csv->print($fh, \@{$row})
or die "Failed to write $file ($!)";
}
close $fh
or die "Failed to close $file ($!)";
}

基于您的样本数据的输出

EMPLOYEENAME,OFFICEHISTORY,JOBLEVELHISTORY
"JOHN SMITH",501,ENGINEER
"JOHN SMITH",601,"SENIOR ENGINEER"
"JOHN SMITH",701,MANAGER
"ALEX BUTTON",601,"SENIOR ASSISTANT"
"ALEX BUTTON",454,MANAGER

关于perl - 在 Perl 中,如何导入示例 CSV,进行基本的文本操作,然后将其保存回 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com