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 = &quotewords('\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 = &quotewords($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)

Antwort per Email an