Schrift
[thread]8432[/thread]

letzte Spalte in jeder zeile ändern: die zahlen durch best. zahl teilen (Seite 2)



<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten
sabrina
 2006-10-19 11:31
#70935 #70935
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee ja es ist immer die letzte Spalte.
@opi werde mal versuchen deinen CODE nachzu empfinden.

lg sabrina
renee
 2006-10-19 11:32
#70936 #70936
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@sabrina: poste doch bitte mal die Datei...

Wenn die KB-Angabe wirklich _immer_ die letzte Angabe pro Zeile ist, dann kann man bei split auch angeben, wie of maximal geteilt werden soll...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sabrina
 2006-10-19 11:36
#70937 #70937
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@opi versteh deinen CODE nicht warum column ohne -1 es gibt keine 6 spalte es gibt nur 5.
Ausser wenn die Datei in der neuen Datei weiterverarbeitet wird aber das hat ja hiermit nichts zu tun.
:rock:
lg sabrina

@renee hab deinen post zu spät gelesen jetzt bin ich verwirrt, die trenner sind richtig, da muss man nichts ändern. Ich will nur das in der letzten Spalte anstatt 32 016 (KB) einfach 31.265625 (MB) steht wobei die einheit nicht dabei stehen soll und wenn ich es auf 3 nachkomma stellen begrenzen kann, wäre ich eine glückliche Praktikantin deren Praktikum bald zu ende ist. Soll ich trotzdem Daten schicken?
lg sabrina\n\n

<!--EDIT|sabrina|1161243649-->
sabrina
 2006-10-19 11:48
#70938 #70938
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
Hier meine Beispiel Daten:
Code: (dl )
Sabrina;Gehring;BLUBB;ge3fr;32 016

und unten im zweiten open wird die datei noch mal verändert sieht dann so aus:
Code: (dl )
Sabrina;Gehring;BLUBB;ge3fr;32 016;50

Danach in einem ganz anderem CODE in dem viele Dateien zu einer werden sollen lösche ich noch das Hex zeichen
das sieht dann so aus :
Code: (dl )
Sabrina;Gehring;BLUBB;ge3fr;32016;50

Das sind meine Ausgaben.
Ich hoffe sie helfen weiter.
Aber momentan ändere ich den ersten CODE also ist es die letzte Spalte.
lg sabrina\n\n

<!--EDIT|sabrina|1161244206-->
renee
 2006-10-19 11:49
#70939 #70939
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Zu dem split

Wenn die Datei so aussieht:
Code: (dl )
1
2
3
dies ist ein Test 32 160
noch ein anderer Test 160
name einer anderen Datei 2 389


Dann könnte man z.B. so arbeiten:
Code: (dl )
1
2
3
4
while(my $line = <$fh>){
my @data = split(/\s/,$line,5);
print $data[4];
}


Dann sind die Zahlen immer beisammen, obwohl da ein Leerzeichen mit drin ist. Das funktioniert aber nur, wenn die KB-Angaben wirklich _immer_ die letzten in der Zeile sind.


Zu "auf 3 nachkomma stellen begrenzen":

Code: (dl )
1
2
my $zahl = 0.5341278954723645728364;
my $zahl_3_nachkommastellen = sprintf("%.3f",$zahl);


siehe perldoc -f sprintf
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2006-10-19 11:51
#70940 #70940
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und welche Deiner Versionen benutzt Du in dem Programm was hier diskutiert wird? Mit den Semikola?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sabrina
 2006-10-19 12:01
#70941 #70941
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
das aller erste Beispiel.
Code: (dl )
Sabrina;Gehring;BLUBB;ge3fr;32 016

Kennst du hier nen einfachen trick, bei dem der vorhandene CODE nicht stark verändert werden muss?

lg sabrina
renee
 2006-10-19 12:06
#70942 #70942
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl

use warnings;
use strict;

my @data;

open(FH,"<BLUBBER.txt") or die $!;
while(my $line = <FH>) {
chomp $line;
my @array = (split(/;/,$line));
$array[-1] =~ tr/0xa0 //;
$array[-1] /= 1024;

if ($line =~/\bBLUBB|SAND?\b/ and $line !~/\bMUSCHEL\b/){
push(@data,[@array]);
} # if
} # while
close (FH);

my $format = '';
for my $i(0..scalar(@{$data[0]})-1){
my $max = find_longest(map{$_->[$i]}@data);
$format .= '%-'.$max.'s ';
}

for my $entry(@data){
print sprintf($format . " ",@$entry);
}

open(OUTDATEN,">ZIEL.txt") or die $!;
for my $entry(@data){
print OUTDATEN join(';',@$entry),"50"," ";
}
close (OUTDATEN) or die $!;


sub find_longest{
my $longest = 0;
for(@_){
my $length = length($_);
$longest = $length if($length > $longest);
}
return $longest;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2006-10-19 12:15
#70943 #70943
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=sabrina,19.10.2006, 09:36]@opi versteh deinen CODE nicht warum column ohne -1 es gibt keine 6 spalte es gibt nur 5. [/quote]
Ganz einfach...

Deine Split-Anweisung schaut wie folgt aus:

split(/[\t\s\\]/,$line

Du splittest nach Tab, Leerzeichen oder Slash, aber nicht nach einem
Semikolon, deshalb bin ich davon ausgegangen, dass deine Zeilen so
aussehen

[quote=renee,19.10.2006, 09:51]
Code: (dl )
1
2
3
dies ist ein Test 32 160
noch ein anderer Test 160
name einer anderen Datei 2 389
[/quote]

Bei $columns ohne -1 wird ganz einfach die 6. Spalte mit in das @array
geschoben. Die 6. Spalte beinhaltet eine Zahl, wenn die Zeile so aussieht:

Code: (dl )
1
2
  1     2      3      4   5  6
name einer anderen Datei 2 389


Folgend wird 5+6 konkatiniert, wenn Spalte 6 eine Zahl ist.

Du hast $columns mit einer 5 angegeben, was der 5. Index - beginnend mit
0 - in einem Array, aber die 6. Spalte in einer "Tabelle" ist. Leider war nicht
ganz klar, wie die Zeilen nun tatsächlich aussehen, deshalb habe ich mich
an dem Format deiner Split-Anweisung orientiert.

Gruss,
opi\n\n

<!--EDIT|opi|1161245773-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
sabrina
 2006-10-19 12:21
#70944 #70944
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@opi STOPP du hattest recht meine Zeilen sehen so aus
Code: (dl )
Sabrina Gehring BLUBBER ge3fr 32 016

das ";" kommt erst weiter unten dazu!
entschuldigung für die veerwirrung wollte nur deutlich machen das die Zahlen zusammen gehören.
Aber die anderen Beispiele Stimen ja, denn dann kommt ja das ";" wirklich dazu.
SORRY
teste es hleich mal opi danke für die erklärung
@renee Hab ich schon probiert allerdings ein bissel anders:
[CODE]
$array[-1] =~ tr/xa0//;
[CODE]
also ich hab deine Variante, meine und ein paar andere getestet.
Das Problem ist das es aus welchen Gründen auch immer es hier in diesem CODE nicht funktioniert.
Desshalb hab ich das in den anderen CODE eingebaut, in dem alle Dateien zusammen kommen, dort hab ich es ohne Probleme hinbekommen.
lg sabrina\n\n

<!--EDIT|sabrina|1161246589-->
<< |< 1 2 3 4 5 6 >| >> 58 Einträge, 6 Seiten



View all threads created 2006-10-18 18:37.