Listenvergleich: CSV-Listen mit teilweise gleichen IDs vergleichen
- Aktualisiert: Freitag, 03. März 2023 13:38
- Geschrieben von Mazin Shanyoor
Um zwei unterschiedliche CSV-Listen mit teilweise gleichen IDs in Perl zu vergleichen und eine dritte Liste mit übereinstimmenden IDs zu erstellen, kann folgenden Code verwendet werden:
Listing 1
#!/usr/bin/perl
# Öffnen Sie die beiden CSV-Dateien für den Lesezugriff
open(my $file1, '<', 'datei1.csv') or die "Konnte datei1.csv nicht öffnen: $!";
open(my $file2, '<', 'datei2.csv') or die "Konnte datei2.csv nicht öffnen: $!";
# Öffnen Sie die Ausgabedatei für den Schreibzugriff
open(my $out, '>>', 'ergebnis.csv') or die "Konnte ergebnis.csv nicht öffnen: $!";
# Erstellen Sie eine Hash-Tabelle zum Speichern der IDs aus der ersten Datei
my %ids;
# Einlesen der erste Datei Zeile für Zeile und speichert die IDs im Hash
while (my $line = <$file1>) {
chomp $line;
my @fields = split(/\t/, $line);
# Die Id befindet sich in der ersten Zelle
my $id = $fields[0];
$ids{$id} = 1;
}
# Einlesen derzweite Datei Zeile für Zeile und suchen nach übereinstimmenden IDs
while (my $line = <$file2>) {
chomp $line;
my @fields = split(/\t/, $line);
# Die Id befindet sich in der ersten Zelle
my $id = $fields[0];
if (exists $ids{$id}) {
# Schreibt die übereinstimmende ID in die Ausgabedatei
#print $out "$id\n";
# Schreibt die gesamte Zeile der übereinstimmende IDs in die Ausgabedatei
print $out "$line\n";
}
}
# Schließen Sie alle Dateien
close($file1);
close($file2);
close($out);
Dieser Code öffnet die beiden CSV-Dateien für den Lesezugriff und die Ausgabedatei für den Schreibzugriff. Dann wird eine Hash-Tabelle erstellt, um die IDs aus der ersten Datei zu speichern. Anschließend wird jede Zeile der zweiten Datei eingelesen, und wenn die ID in der Hash-Tabelle gefunden wird, wird die gesamte Zeile in die Ausgabedatei geschrieben.
Die Ausgabedatei enthält dann alle IDs (plus der gesamten Zeile der zweiten CSV-Datei), die in beiden CSV-Listen vorkommen. Zu beachten ist, dass dieser Code davon ausgeht, dass die IDs in der ersten Spalte jeder CSV-Datei stehen (my $id = $fields[0]) und durch Kommas getrennt sind. Wenn die CSV-Dateien eine andere Struktur haben, muß der Code entsprechend anpasst werden.