Perl 读入文件并为共享密钥添加其他唯一值
抱歉,如果标题含糊不清或令人困惑-我很难准确表达我想做什么 我有几个.csv文件,其中包含两列数据,格式为“Perl 读入文件并为共享密钥添加其他唯一值,perl,csv,Perl,Csv,抱歉,如果标题含糊不清或令人困惑-我很难准确表达我想做什么 我有几个.csv文件,其中包含两列数据,格式为“”、“”。每个.csv文件代表不同的语言;以下是其中三个示例: int.csv: "55545","Hello.", "55546","I'm new to perl.", "55547","Bonus string!", "55548","Please help.", fra.csv: "55545","Bonjour.", "55546","Je suis nouveau à per
”、“
”。每个.csv文件代表不同的语言;以下是其中三个示例:
int.csv:
"55545","Hello.",
"55546","I'm new to perl.",
"55547","Bonus string!",
"55548","Please help.",
fra.csv:
"55545","Bonjour.",
"55546","Je suis nouveau à perl.",
"55548","S'il vous plaît aider.",
ita.csv:
"55545","Ciao.",
"55546","Sono nuovo di perl.",
"55547","Stringa di Bonus!",
"55548","Si prega di aiutare.",
我想做的是读入这些文件,并将它们合并成一个.csv文件,从int.csv开始,然后从那里添加到右边。如果int.csv中有一个条目在其他条目中不存在,我想插入一个空值,以便保持列正确对齐
因此,我期望的输出是:
"55545","Hello.","Bonjour.","Ciao.",
"55546","I'm new to perl.","Je suis nouveau à perl.","Sono nuovo di perl.",
"55547","Bonus string!","","Stringa di Bonus!",
"55548","Please help.","S'il vous plaît aider.","Si prega di aiutare.",
这些源.csv文件是由我编写的perl脚本生成的,因此如果需要,可以编辑源文件。我的直觉是逐行解析每个.csv,将字符串ID和字符串值捕获到散列的键/值中,但我不确定如何真正做到这一点,更不用说将其中的两个(或更多)合并到一个散列中了
如有任何指导/指示,将不胜感激。我上周才开始学习perl,使用了大量的试错和在线资源,我对$scalars和@array已经相当熟悉,但哈希是一个陌生的领域。谢谢 这是您可能想做的粗略概述: 在中读取所有三个文件,并将所需信息提取到VAR中
while (<$file1>){
chomp;
my ($id, $word) = /"(\d+)","(.*)"/;
将所有文件存储在如下哈希中后,可以在不同哈希中查找键之间的重叠:
for my $id (keys %english_hash){
print "$id\t English: $english_hash{$id}\t";
if (exists $french_hash{$id}){
print "French: $french_hash{$id}\n";
}
else {print "French: [...]\n"}
}
根据英文和法文输入,此打印:
55547 English: Bonus string! French: [...]
55548 English: Please help. French: S'il vous plaît aider.
55545 English: Hello. French: Bonjour.
55546 English: I'm new to perl. French: Je suis nouveau à perl.
对于
如果存在$french_hash{$id}
,我会对每种语言重复这一点吗?是的-这样您就可以在所有散列中找到共享同一键(数字ID)的值(单词)…在混合中引入多种语言时,我仍然存在一个问题。我希望能够输出英语中存在的条目,即使它们在其他语言中不存在,在这种情况下,我希望替换一个空值(“”),以保持列结构完整。这可能吗?删除如果存在$french_hash{$id}
导致未初始化的值错误,我不确定在何处(或如何)定义$french_hash{$id}
语句。附录:我考虑添加另一个print
条目,使用除非存在
,而不是如果存在
,但是,当你引入两种以上的语言时,你会遇到一个问题——你必须为每种可能的结果设置条目,而这些结果会呈指数增长。@nkaun——我只想使用几个if语句。我已经更新了答案-应该会产生正确的英语和法语结果。。。
55547 English: Bonus string! French: [...]
55548 English: Please help. French: S'il vous plaît aider.
55545 English: Hello. French: Bonjour.
55546 English: I'm new to perl. French: Je suis nouveau à perl.