Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8145[/thread]

Newline-Zeichen im Text entfernen

Leser: 2


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
rommmi
 2006-07-06 15:17
#67897 #67897
User since
2006-06-11
15 Artikel
BenutzerIn
[default_avatar]
Hallo Perlies,

hab ein Problem. Ich habe eine Quelldatei die so ausschaut:

1;"067284-01";"arbeit erledigt Test";"Kiel";
2;"067285-02";"arbeit offen # Test";"Bonn";
3;"067289-03";"arbeit offen Test";"Bonn";

Jetzt mein Problem: In der zweiten Zeile ist in der Orginal-Quelldatei anstatt dem # ein richtiges Newlinezeichen (Steuerzeichen) drin. Ich habe hier in diesem Editor nur ein # reingeschrieben da ich euch sonst nicht das Problem anschaulich erklären kann weil der Community-Editor gleich eine neue Zeile daraus macht.
In der Orginaldatei ist da aber ein richtiges Steuerzeichen mitten im Text.

Meine Frage: Wie kann ich das Newlinezeichen mitten im Text entfernen ohne damit die Newlinezeichen am Ende jeder Zeile zu entfernen? Es soll die Zeile als solchen schon erhalten bleiben, da ich dann jede Zeile gesondert noch verarbeite.

Gruss
rommmi
renee
 2006-07-06 15:33
#67898 #67898
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich empfehle Dir, CPAN:Text::CSV bzw. CPAN:DBI im Zusammenspiel mit CPAN:DBD::CSV zu verwenden. Das parsen von CSV-Dateien ist nicht sehr trivial...
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-07-06 15:35
#67899 #67899
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wiki:Hier findest Du ein Beispiel, wie die Sache mit CPAN:DBI und CPAN:DBD::CSV funktioniert...
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/
rommmi
 2006-07-06 15:36
#67900 #67900
User since
2006-06-11
15 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich glaube ich habs ein bisschen umständlich formuliert. Drum noch mal kurz:

ich habe eine Datei mit mehren Zeilen. Bei einigen Zeilen ist mitten im Text ein Newline-Zeichen drin (also nicht erst am Ende der Zeile). Diese Newline-Zeichen mitten im Text möcht ich aus der Datei entfernen ohne die Newlinezeichen am Ende jeder Zeile zu zerstören!

Gruss
rommmi
rommmi
 2006-07-06 15:41
#67901 #67901
User since
2006-06-11
15 Artikel
BenutzerIn
[default_avatar]
Hallo renee!
Ich weiss garnicht ob das eine CSV-Datei ist. Als Datei-Typ steht bei mir im Windows nur "Datei".

Hab mal in die Beschreibung von DBD::CSV reingeschaut. Recht kompliziert. Weisst du ne einfacher Lösung?

Danke für die schnelle Antwort :-)

Gruss
rommmi
betterworld
 2006-07-06 15:58
#67902 #67902
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Auf welchem Betriebssystem arbeitest Du?

Bei Windows wird meist erst eine neue Zeile angefangen, wenn die beiden Zeichen "\xD\xA" hintereinander stehen. Wenn in Deiner Datei ein "Newline" steht, das aber die Zeile nicht umbricht, koennte es vielleicht ein einzelnes "\xD" oder "\xA" sein. In dem Fall koennte man es mit tr/\xA//d oder tr/\xD//d entfernen. Ich wuerde es allerdings nicht Newline nennen, wenn es die Zeile nicht umbricht ;) Wie kommst Du denn darauf, dass es ein Newline ist?\n\n

<!--EDIT|betterworld|1152187168-->
Digioso
 2006-07-06 16:09
#67903 #67903
User since
2006-07-06
8 Artikel
BenutzerIn
[default_avatar]
Hmm, müsste auf jeden Fall mit einer Schleife gehen, die bis $-1 läuft.

So wie ich das sehe, enden ja alle deine Zeilen mit ;
Dazu könntest du dir euch eine RegEx basteln, die bis ;$ läuft.\n\n

<!--EDIT|Digioso|1152188340-->
pq
 2006-07-06 16:34
#67904 #67904
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=rommmi,06.07.2006, 13:41]Ich weiss garnicht ob das eine CSV-Datei ist. Als Datei-Typ steht bei mir im Windows nur "Datei".

Hab mal in die Beschreibung von DBD::CSV reingeschaut. Recht kompliziert. Weisst du ne einfacher Lösung?[/quote]
CSV heißt comma seperated values. was windows denkt, was eine
datei ist, ist hier unerheblich. du hast pro zeile mehrere werte, die mit
einem semikolon getrennt sind. wenn du die datei korrekt mit einem
der genannten CSV-module einlesen kannst, sollte dich das newline
nicht mehr stören. das mag für dich nicht als der einfachste weg
erscheinen, aber es ist vermutlich der korrekteste, und wenn du's einmal
gelernt hast, sparst du dir in zukunft zeit.
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
rommmi
 2006-07-06 16:36
#67905 #67905
User since
2006-06-11
15 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich arbeite mit XP-Professional. Wie ich darauf komme das es ein Newline ist?

Also: Wenn ich die Datei in ein Array lade und bearbeiten möchte wird die
Zeile "2;"067285-02";"arbeit offen # Test";"Bonn";" genau an dem Steuerzeichen geteilt und
es werden zwei Zeilen daraus. Auch wenn ich die Zeile aus der Orginaldatei hier in den Editor kopiere wird diese besagte Zeile in zwei Zeilen dargestellt. Drum habe ich bislang von einem Newline gesprochen.

Was auf jeden Fall komisch ist wenn ich die Datei mit Notepad öffne sehe ich zwar so ein komisches Steuerzeichen (so ein kleines Quadrat) aber Notpad bricht die Zeile dort nicht um.

Das Problem ist wenn ich die Datei in Array lade um die Datei zu bearbeiten wird diese Zeile ja schon in zwei Zeilen geteilt und jede steht dann in einem eigenen Array-Index. Hmmmmmmmmmmm


??????
Gruss
rommmi
rommmi
 2006-07-06 16:41
#67906 #67906
User since
2006-06-11
15 Artikel
BenutzerIn
[default_avatar]
Jetzt bins ich nochmal,

übrigens habe ich die Datei mal mit den Notepad geöffnet und dieses Zeichen zu suchen und ersetzen. Da wurden dann halt alle Newlinezeichen entfernt und die Datei war dann nur noch eine einzige grosse Zeile.

Vielleicht kann ich euch ja mal die Datei schicken. Geht das? Natürlich nur eine Auszug aus der Datei (3 Zeilen).

Gruss
rommmi
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-07-06 15:17.