Schrift
[thread]8356[/thread]

einzelne Woerter entfernen: nicht ganze zeilen



<< |< 1 2 3 4 ... 6 >| >> 54 Einträge, 6 Seiten
sabrina
 2006-09-25 13:22
#70170 #70170
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
hi
haette mal wieder ne frage und zwar:
ich weiss ja wenn ich
Code: (dl )
if($line =~ /\bblubb|sand?\b/){

schreibe heist das schreibe alle zeilen in dennen blubb oder sand steht und mit
Code: (dl )
$line =~ tr/\x22//d;
kann ich nur einzelne Buchstaben entfernen aus einer zeile,
aber ich sollte drei worter aus dem text entfernen die nicht in jeder zeile steht sondern nur selten irgendwo mal vorkommt.
und zwar
Code: (dl )
MFG  DOME/GT  OG
diese drei muessen aus dem text genommen werden aber da sie nur ab und zu auftauchen und nicht immer an der gleichen stelle kann ich keine possitionen angeben, die eingabe daten sehen so aus nach dem ich schon was veraendert habe
Code: (dl )
1
2
3
4
8975543;67,97;get
8376570;MFG;50,35
6573597;48,98;tzu
7654739;DOME/GT;48,38

koennt ihr mir vielleicht einen hinweis geben wie die funkion heist splice kann ich ja auch nicht nehmen weil ich keine possition habe
hoffe auf eure hilfe
lg sabrina
sid burn
 2006-09-25 13:49
#70171 #70171
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich denke du suchst soetwas:

Code: (dl )
1
2
3
$line =~ s#MFG##g;
$line =~ s#DOME/GT##g;
$line =~ s#OG##g;


Vielleicht solltest du davor oder dahinter noch ein Semikolion einbinden. Damit beim letzten z.B. nicht "OG" aus "DOG" entfernt wird. oder anderes. Wenn das gesuchte Wort immer in einer bestimmten Spalte steht. Bei dir anscheind 2te, dann kannst du es auch noch darauf begrenzen.

Ich würde allerdings ein Modul nehmen das CSV Dateien bearbeiten kann. Den das heißt du ja anscheind hier?
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
sabrina
 2006-09-25 14:00
#70172 #70172
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
es ist eine .txt datei und es steht nicht immer in jeder zweiten spalte das war grad zufall
ich kann doch auch mit \b begrenzen oder werde es versuchen und meld mich dann wieder danke fuer den tip aufjeden fall.
lg sabrina
sabrina
 2006-09-25 15:42
#70173 #70173
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
also irgendwie tut das nicht so wie ich will hier  mein code
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
use strict;
use warnings;
my $fes = 'lala.txt';
my $fest = 'lalagesamt.txt';
my @lines;
my columns = 3;
open (my $fh,'<',$fes) or die $!;
while (my $line = <$fh>){
chomp $line;
my @line = (split(/[\s]+/,$line))[0..($columns-1)];
$line =~s:\bMFG\b::g;
$line =~s:\bDOME/GT\b::g;
$line =~s:\bOG\b::g;
push(@lines,\@line);
}
print join(";",@$_),"\n"for(@lines);
close $fh or die $!;
open(my $w_fh,'>',$fest) or die $!;
print $w_fh join(";",@$_),"\n"for(@lines);
close $w_fh or die$!;

die woerter sind immer noch im text dafuer keine fehlerausgabe
und wenn ich die while schleife so ändere
Code: (dl )
1
2
3
4
5
6
7
8
while (my $line = <$fh>){
chomp $line;
$line =~s:\bMFG\b::g;
$line =~s:\bDOME/GT\b::g;
$line =~s:\bOG\b::g;
my @line = (split(/[\s]+/,$line))[0..($columns-1)];
push(@lines,\@line);
}

kommen auch keine fehlermeldungen nur in der ausgabe stehen dann noch die MFG und mitten in der ausgabe steht
Code: (dl )
1
2
use of uninitialized value in join or string at C:\blabla.pl line 18,<$fh> line 257.
use of uninitialized value in join or string at C:\blabla.pl line 21.
hat jemand ne idee warum er MFG nicht rausschmeisst?
lg sabrina
renee
 2006-09-25 15:50
#70174 #70174
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Dir mal mit CPAN:Data::Dumper den Inhalt von @lines angeschaut??

Im Prinzip ist es richtig was Du machst (bei der 2. Variante)... Es sieht ganz so aus, als hättest Du dann keine 3 Spalten mehr in einer Zeile, wenn Du die Wörter gelöscht hast.
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-09-25 16:04
#70175 #70175
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee
das macht nichts wenn manchmal nur zwei spalten sind, hab ich jetzt schon zum teil, aber dieses MFG geht einfach nicht weg, mhh komisch.
nein mit data::dumper hab ich noch nichts gemacht.
werde gleich mal schauen obs geht danke fuer den hinweis
lg sabrina\n\n

<!--EDIT|sabrina|1159186013-->
docsnyder
 2006-09-25 16:55
#70176 #70176
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi Sabrina!

Warum machst Du denn überhaupt den split()?

Im Grunde genügt Dir das:

Code: (dl )
1
2
3
4
5
6
7
8
9
while (my $line = <$fh>){
chomp $line;

$line =~s:\bMFG\b::g;
$line =~s:\bDOME/GT\b::g;
$line =~s:\bOG\b::g;

push(@lines, $line);
}


oder

Code: (dl )
1
2
3
4
5
6
7
while (my $line = <$fh>){
chomp $line;

$line =~s:\b(MFG|DOME/GT|OG)\b::go;

push(@lines, $line);
}


oder

Code: (dl )
1
2
3
4
5
while (my $line = <$fh>){
chomp $line;

push(@lines, $line =~s:\b(MFG|DOME/GT|OG)\b::go);
}


Das Array @lines kannst Du dann anschliessend in die Ausgabe-Datei schreiben.

*lg*, Doc
sabrina
 2006-09-25 17:31
#70177 #70177
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@renee also mit data::dumper wenn ich beide print vorher auskommentiere kommt folgende ausgabe
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
$VAR1 = [
              '8975543',
               '67,97',
               'get'
             ];


$VAR2 = [
              '8376570',
              '50,35'
              'DRE'
             ];
usw
@doc hast su deine code stuecke schon mal getestet?
beim ersten kommt weder ausgabe noch fehlercode
beim zweiten genau das gleiche und beim dritten bekomme ich als ausgabe nur einen punkt aber keine fehlermeldungen
lg sabrina
docsnyder
 2006-09-25 17:46
#70178 #70178
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@sabrina

Ja, ich habe meine Code-Stücke getestet, aber mein posting ist nicht komplett und enthält nur die wesentlichen Code-Stücke (die Schleife). Das Einlesen der Datei in das Array und das Rausschreiben des Arrays in die Ausgabedatei habe ich weggelassen.

Gruß, Doc\n\n

<!--EDIT|docsnyder|1159192058-->
sabrina
 2006-09-25 18:05
#70179 #70179
User since
2006-08-03
264 Artikel
BenutzerIn
[default_avatar]
@doc
ok ich hab zwar als ausgabe auch ein array und ich habs auch in ein array eingelesen aber ich versuches gern gleich noch mal!
lg sabrina

@renee
durch den Data::Dumper weis ich jetzt das was in meinem array drinsteht. aber ich weis immer noch nicht warum MFG drinsteht hast du ne idee, wenn es nur 2zeilen sind steht an 3.stelle einfach undef aber nur im Dumper klar es wurde ja auch nichts festgelegt.
lg sabrina\n\n

<!--EDIT|sabrina|1159193283-->
<< |< 1 2 3 4 ... 6 >| >> 54 Einträge, 6 Seiten



View all threads created 2006-09-25 13:22.