Unter Schirmherrschaft von
Factory Seven Media & Consulting
running-cool.de
   X   

[Krankheiten von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Medikamente von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Diagnostik & Laborwerte von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Therapieverfahren von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Gesundheitsthemen von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   

[Symptome von A bis Z]

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

   X   
Suche

Listenvergleich: CSV-Listen mit teilweise gleichen IDs vergleichen

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.

 

Inhaltsverzeichnis Top