gpt4 book ai didi

perl - 用于处理 CSV 文件、聚合分布在多个记录中的属性的 Perl 脚本

转载 作者:行者123 更新时间:2023-12-03 05:10:21 25 4
gpt4 key购买 nike

抱歉,这个问题含糊其辞,我正在努力思考如何更好地表达它!

我有一个 CSV 文件,看起来有点像这样,只是大得多:

550672,1
656372,1
766153,1
550672,2
656372,2
868194,2
766151,2
550672,3
868179,3
868194,3
550672,4
766153,4

第一列中的值是 ID 号,第二列可以描述为属性(因为需要更好的词......)。 ID 号 550672 具有属性 1、2、3、4。谁能告诉我如何开始解决如何生成诸如所有 ID 号之类的字符串的问题?我理想的输出是一个新的 csv 文件,如下所示:

550672,1;2;3;4
656372,1;2
766153,1;4

等等

我是一个 Perl 婴儿(只有 3 天大!),所以非常感谢指导而不是彻底的解决方案,我决心学习这些东西,即使这需要我剩下的时间!我已经尽力自己去调查它,尽管我认为我一直因为不知道真正要寻找什么而受到阻碍。我能够读入并解析 CSV 文件(我什至删除了重复的值!),但这确实是它让我失望的地方。任何帮助将不胜感激!

最佳答案

我认为最好为您提供一个可行的程序,而不是一些提示。提示只能带您到目前为止,如果您花时间理解这段代码,它将给您带来良好的学习体验

最好使用Text::CSV每当您处理 CSV 数据时,因为所有调试都已为您完成

use strict;
use warnings;

use Text::CSV;

my $csv = Text::CSV->new;

open my $fh, '<', 'data.txt' or die $!;
my %data;
while (my $line = <$fh>) {
$csv->parse($line) or die "Invalid data line";
my ($key, $val) = $csv->fields;
push @{ $data{$key} }, $val
}

for my $id (sort keys %data) {
printf "%s,%s\n", $id, join ';', @{ $data{$id} };
}

输出

550672,1;2;3;4
656372,1;2
766151,2
766153,1;4
868179,3
868194,2;3

关于perl - 用于处理 CSV 文件、聚合分布在多个记录中的属性的 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450904/

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