Hallo,um aus der Beispieldatei ui_daten-csv
[datei]
Testbeispiel für die Datenaufbereitung mit Hilfe des Programms Perl;;;;;;;
Polarisationskurven bei Variation der Stöchiometrie;;;;;;;
P= 1.5 Bara;;;;;;;
Lambda = 1.5;;;;;;;
I/A;0,0;0,2;0,4;0,6;0,8;1,0;1,2
U;0,9;0,7;0,6;0,6;0,5;0,5;0,2
Lambda = 2.0;;;;;;;
I/A;0,0;0,2;0,4;0,6;0,8;1,0;1,2
U;0,9;0,7;0,6;0,6;0,6;0,5;0,3
[/datei]
die Zeilen mit Lambda, I/A und U in eine eigene Datei ui_neu.txt zu schreiben, verwende ich folgendes Perl- Programm :
use strict;
my $dateiname="ui_daten.csv";
my $newdat="ui_neu.txt";
my @werte;
my $key = 0;
my $next;
my $search1 = "Lambda";
my %dateiinhalt;
open(FH,"<$dateiname");
open(NH,">$newdat");
while(<FH>){
$key = $key+1;
$dateiinhalt{$key} = "$_";
}
close FH;
$key=1;
foreach $key (keys %dateiinhalt){
$_ = $dateiinhalt{$key};
if ($_=~/$search1/) {
if ($_=~ /\s(\d.\d);/) {
print NH "Lambda = $1\n";
$next=$key+1;
$_=$dateiinhalt{$next};
print"$_";
print NH "Stromdichte I/A\n";
@werte=split(/;/,$_);
foreach(@werte) {
print NH $_." " if ($_ =~ m/^\d.+/);
print NH $_.",0 " if ($_ =~ m/^\d$/);
}
$next=$next+1;
$_=$dateiinhalt{$next};
print NH "Spannung U\n";
@werte=split(/;/,$_);
foreach(@werte) {
printf NH $_." " if ($_ =~ m/^\d.+/);
printf NH $_.",0 " if ($_ =~ m/^\d$/);
}
print NH "\n"
}
}
}
close NH;
Als Ergebniss erhalte ich:
Lambda = 2.0
Stromdichte I/A
0,0 0,2 0,4 0,6 0,8 1,0 1,2
Spannung U
0,9 0,7 0,6 0,6 0,6 0,5 0,3
Lambda = 1.5
Stromdichte I/A
0,0 0,2 0,4 0,6 0,8 1,0 1,2
Spannung U
0,9 0,7 0,6 0,6 0,5 0,5 0,2
d.h. die Zeile mit der Spannung U ist um eine Stelle eingerückt. Hat jemand eine einfache Lösung wie die Einrückung vermieden werden kann.
Ich danke vorab für Eure Unterstützung.
Gruß
Tom04
Datum: 09.01.2005-18:32
