Schrift
[thread]9137[/thread]

parse hilfee:-(((

Leser: 2


<< >> 7 Einträge, 1 Seite
Gast Gast
 2007-06-29 13:53
#77993 #77993
ich habe die folgende daten in der datei:(natürlich viele davon in der gleiche Art aber hier nur ein Muster davon)

Code: (dl )
1
2
>gi8886141|gb|AAF80385.1| carbofuran hydrolase 
MALNRIKNSNPSTLPPETPGEGPFMHEHQADILKWIRLADDVYRFRD


das sind 2 zeilen, und mein wunsch wäre die datei aufzumachen dann ändern in dem sie wie unten aussieht :

Code: (dl )
>gi8886141 (|gb|AAF80385.1|) carbofuran hydrolase 


immer nach dem (gi+zahlen) bis | zeichen,
dann davor eine klammer setzten mit leerzeichen auch
dann weiter bis zum nächsten | zeichen
dann die klammer zumachen.
ist schon schwer glaube ich

irgendein parse rule, wäre cool, da ich noob bin würde ich mich auf eine ausführliche hilfe.
danke an alleeee im voraus

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1183114052-->
MisterL
 2007-06-29 14:18
#77994 #77994
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Dafür kennt Perl das Stichwort 'Reguläre Ausdrücke': Link zur FAQ. Zu verwenden wäre der Operator zum Suchen und Ersetzen von Texten.
Oder man versucht sich an CPAN:Tie::File

Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
bloonix
 2007-06-29 14:21
#77995 #77995
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
so eine rule ist möglich, wenn die zweite zeile immer aus großbuchstaben
besteht. kannst du mal code-tags drum packen, damit der smiley da
verschwindet? :)
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.
renee
 2007-06-29 15:20
#77996 #77996
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dafür gibt es genügend Module. Einige in BioPerl und zusätzlich noch CPAN:Bio::FASTASequence. Die kümmern sich um das Parsen von FASTA Dateien.
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/
Berber
 2007-06-29 19:05
#77997 #77997
User since
2007-06-29
1 Artikel
BenutzerIn
[default_avatar]
alles klar,
so dieses ausdruck tut was ich will,
Code: (dl )
$_ =~ s/^(gi\d+?)(\|.+?\|.+?\|)\s+?(.+?)/$1 ($2) $3/g;


meine txt Datei besteht aus vielen zeilen die so aussehen:
Code: (dl )
1
2
3
4
5
6
7
>gi113|Histone K17di [Homo sapiens]
APAEKTPVKKGC
>gi11998|Histone K17di [Homo sapiens]
APAEKTPVKKGC
>gi1666|Histone K17di [Homo sapiens]
APAEKTPVKKGC
..etc

immer die erste Zeile die den muster erfüllt >gi...
und die zweite(können auch mehrere sein) mit gross Buchstaben
diese txt-datei(vorallem die erste zeile) möchte ich jetzt verändern(mittels den reg Ausdruck oben) in allesn zeilen wo s vorkommt.

ich glaub ich muss es in ein Array einlesen oder?

Code: (dl )
1
2
3
4
5
6
7
8
9
my $myfile= 'C:/Documents and Settings/XXX/Desktop/YYY/test.txt';

open (FILE, "$myfile") || die "Can't open '$myfile': $!\n";
my @parse = <FILE>;
close(FILE);

foreach (@parse) {
chomp;
$_ =~ s/^(gi\d+?)(\|.+?\|.+?\|)\s+?(.+?)/$1 ($2) $3/g;


dann????
weiss dass ich ein andere Handle aufmachne muss mit >FILE um darin zuschrieiben aber ich kriegs nicht hin.
danke nochmal für die hilfe im voraus


edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1183148240-->
#Kein Kommentar
 2007-06-29 19:54
#77998 #77998
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
so müsste es funktionieren:

Code: (dl )
1
2
3
open (WRITE, ">example.txt) || die "Can't open 'example.txt':\n$!";
print WRITE @parse;
close WRITE;



Tipp: benutze anstatt

Code: (dl )
1
2
3
open (FILE, "$myfile") || die "Can't open '$myfile': $!\n";
my @parse = <FILE>;
close(FILE);


lieber das:

Code: (dl )
1
2
3
4
5
open (FILE, "$myfile") || die "Can't open '$myfile': $!\n";
while ($zeile = <FILE>) {
       #tue etwas mit $zeile
}
close FILE;


ansonsten könntest du speicherprobleme bei großen dateien kriegen
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
pq
 2007-06-30 00:17
#77999 #77999
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Berber: bitte beim nächsten mal selber code-tags benutzen. danke
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 7 Einträge, 1 Seite



View all threads created 2007-06-29 13:53.