Hi,
um wegen meines Gnumeric-Vorschlags nicht als unsportlicher Feigling zu
erscheinen ;) will ich noch einen Kommentar samt Warnung loswerden.
Tepperis von der Ohe, Michael (LOGICA) hat gesagt:
> hier ein programm-rahmen. allerdings gibt es ein
> gutes, hilfreiches html-modul fuer perl.
> $_ ist die aktuelle zeile.
>
> #!/usr/bin/perl
> [...]
> while( <FILE> ) # datei einlesen
> {
> s/,/<td>/g;
Die Warnung:
Obiges funktioniert nicht immer, warum s.u.
> print FILE2 " <tr><td>$_</tr>\n";
> }
Der Kommentar:
Einfach das Komma durch <td> zu ersetzen (wie auch in den
Shell-L�sungen vorgeschlagen), geht dann nicht mehr, wenn in den
csv-Feldern selber Kommas auftauchen d�rfen, und das ist zum Beispiel bei
Preisen gar nicht selten. Meist wird dann das Komma gesch�tzt, ala \, oder
der ganze Dateneintrag in "Anf�hrungszeichen" gesetzt. Da kommt die naive
L�sung nat�rlich aus dem Tritt.
Man muss also gegebenenfalls vorbereitet sein. Wie man das in der Shell
macht, wei� ich nicht, Python ist leider nicht so popul�r, daher hier die
Perl-L�sung:
Sie steckt im Modul Text::ParseWords und hei�t quotewords. Das Beispiel in
der man-Page:
use Text::ParseWords;
@words = "ewords('\s+', 0, q{this is "a test" of\ quotewords \"for you});
$i = 0;
foreach (@words) {
print "$i: <$_>\n";
$i++;
}
gibt aus:
0: <this>
1: <is>
2: <a test>
3: <of quotewords>
4: <"for>
5: <you>
Das ergibt dann diese Funktion, um eine csv-Zeile zu splitten:
$sep = ","; # oder wie auch immer
sub parse_csv {
my $text = shift; # record containing comma-separated values
my @new = ();
@new = "ewords($sep, 0, $text);
return @new; # list of values that were comma-separated
}
Stammt glaube ich aus dem Perl-Cookbook, liegt hier so rum...
Damit wird der Loop zu:
while( <FILE> )
{
# splitte aktuelle Zeile:
@data = parse_csv($_);
# @data weiter verarbeiten
&Mach_html_aus(@data);
}
Ciao,
--
__ __
Frank Barknecht ____ ______ ____ __ trip\ \ / /wire ______
/ __// __ /__/ __// // __ \ \/ / __ \\ ___\
/ / / ____/ / / / // ____// /\ \\ ___\\____ \
/_/ /_____/ /_/ /_//_____// / \ \\_____\\_____\
/_/ \_\
--
Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)