[Allegro] Vorgehensweise
Thomas Berger
ThB at Gymel.com
Do Jan 23 13:13:45 CET 2014
Lieber Herr Stephan,
> Ich habe Ausgangsdaten, in denen Schlagwort-Ketten in #31er-Kategorien
> vorkommen, auch mehrere Schlagwort-Ketten in einer Kategorie. Nach der
> Konvertierung sollen statt der Schlagwörter an dieser Stelle ID-Nummern stehen.
>
> Also:
>
> Ausgangsfeld: Schlagwort Eins / Schlagwort Zwei / Schlagwort Drei ; Schlagwort
> Vier / Schlagwort Fünf ; Schlagwort Vier / Schlagwort Zwei / Schlagwort Eins
>
> Zielfeld: 1 / 2 / 3 ; 4 / 5 ; 4 / 2 / 1
>
> Ich verfüge über eine Konkordanz-Tabelle, in der die Schlagwörter und die
> zugehörigen ID-Nummern stehen.
Es koennte von Belang sein, ob die Daten hinterher in der Datenbank sein
sollen, oder ob diese Ersetzungen nur fuer einen bestimmten Export
gelten sollen.
Anscheinend liegt Ihre Konkordanz nur in der Tabelle vor, nicht in Form
etwa von Normdatensaetzen innerhalb der Datenbank? Im letzteren Fall
koennte man mit Mitteln der Exportsprache ja einfach "nachgucken", was
die Nummer sein soll...
In der anderen Mail erwaehnten Sie 20.000 Ersetzungen, das ist ein Klacks,
d.h. Sie koennen einen regulaeren Ausdruck bauen, der dann auf die
Datenfelder (in einem Text-Export) losgelassen werden kann, also etwa
#!/usr/bin/perl -w
use strict;
my %konk;
open(SLURP, "<konkordanz.tab");
while (<SLURP>) {
chomp;
my($text, $id) = split(/\t/, $_);
next unless $id;
$konk{$text} = $id;
};
close(SLURP);
my $riesenRegExp = join("|", map{quotemeta} reverse sort keys %konk);
while ( <> ) {
chomp;
1 while s!^(#31.*[/;]\s*)($riesenRegExp)(\s*[/;]|$)!$1.$konk{$2}.$3/eo;
print "$_\n";
}
(nicht getestet)
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro