Schrift
[thread]10540[/thread]

MxN-Matrix in Tabelle umwandeln



<< >> 8 Einträge, 1 Seite
abenstex
 2007-10-08 17:57
#100498 #100498
User since
2007-08-12
5 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich habe eine relativ verzwickte Datei mit einer Matrix nach folgendem Muster:
Feld1 Feld2 Feld3 ...
ID1 {TAB} A C {TAB} A B {TAB} A T
ID2 {TAB} A H {TAB} C V {TAB} C T
...

Was ich jetzt bräuchte ist eine Tabelle in folgender Form:
ID1 {TAB} Feld1 {TAB} A C
ID1 {TAB} Feld2 {TAB} A B
ID1 {TAB} Feld3 {TAB} A T
ID2 {TAB} Feld1 {TAB} A H
ID2 {TAB} Feld2 {TAB} C V
ID2 {TAB} Feld3 {TAB} C T

{TAB} steht dabei immer für einen - na was wohl - Tablator. Sprich alle Spalten sollten durch einen Tabulator getrennt werden, die einzelnen Buchstaben (z.B. A C) jeweils nur durch ein Leerzeichen.
Ich hab zwar ein kleines Perl-Skript mit dem ich die MxN-Matrix in eine NxM-Matrix umwandeln kann, komme aber damit nicht so ganz zu meinem Wunschergebnis.
styx-cc
 2007-10-08 18:10
#100503 #100503
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hi, so in der Art?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl -w
use strict;
while (<DATA>) {
my @parts = split/ {TAB} /,$_;
for (1..$#parts) {
print "$parts[0]\tFeld$_\t$parts[$_]\n";
}
}

__DATA__
ID1 {TAB} A C {TAB} A B {TAB} A T
ID2 {TAB} A H {TAB} C V {TAB} C T


Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
styx@styx-laptop:~/programmierung/perl/tests$ perl matrix.pl
ID1 Feld1 A C
ID1 Feld2 A B
ID1 Feld3 A T

ID2 Feld1 A H
ID2 Feld2 C V
ID2 Feld3 C T
Pörl.
abenstex
 2007-10-08 18:19
#100504 #100504
User since
2007-08-12
5 Artikel
BenutzerIn
[default_avatar]
Danke schon mal! Das Problem ist nur, dass das, was ich als Feld1... bezeichnet habe nicht Feldx heisst sondern von mir Gurkensalat oder Auspuffrohr oder sonst irgendwas und das macht die Sache ein bisschen komplizierter, sprich
Code: (dl )
Feld$_
funktioniert nicht wirklich.
styx-cc
 2007-10-08 18:23
#100505 #100505
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Und wo steht wie das heisst?
Aus
Code: (dl )
1
2
ID1 {TAB} A C {TAB} A B {TAB} A T
ID2 {TAB} A H {TAB} C V {TAB} C T
laesst sich ja jetzt nicht ableiten, ob da Gurkensalat oder Mohnkuchen steht...

MfG
Pörl.
abenstex
 2007-10-08 18:27
#100507 #100507
User since
2007-08-12
5 Artikel
BenutzerIn
[default_avatar]
Sorry, das ist in meinem ersten Post nicht wirklich gut rübergekommen. Also hier nochmal die verbesserte Version:
{TAB}Gurkensalat{TAB}Mohnkuchen{TAB}Donaudampfer ...
ID1 {TAB} A C {TAB} A B {TAB} A T
ID2 {TAB} A H {TAB} C V {TAB} C T
styx-cc
 2007-10-08 18:34
#100511 #100511
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -w
use strict;

chomp(my $line = <DATA>);
my @headers = split/ /,$line;
while (<DATA>) {
my @parts = split/ {TAB} /,$_;
for (1..$#parts) {
print "$parts[0]\t$headers[$_-1]\t$parts[$_]\n";
}
}

__DATA__
Gurke Tomate Banane
ID1 {TAB} A C {TAB} A B {TAB} A T
ID2 {TAB} A H {TAB} C V {TAB} C T
Pörl.
abenstex
 2007-10-08 18:38
#100512 #100512
User since
2007-08-12
5 Artikel
BenutzerIn
[default_avatar]
Spitze! Danke dir vielmals!
styx-cc
 2007-10-08 18:41
#100513 #100513
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Gern geschehen :-)
Pörl.
<< >> 8 Einträge, 1 Seite



View all threads created 2007-10-08 17:57.