WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

txt-Datei einlesen

 

csToni
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 12:14     Titel: txt-Datei einlesen
  Antworten mit Zitat      
Hallo,

stöbere schon seit mehreren Tagen im Internet, habe leider bis jetzt keine zufriedenstellende Lösung gefunden.

Mein Problem ist folgendes, ich habe eine große Textdatei, die aus vielen Zeilen besteht. Diese Zeilen bestehen aus Text und einem Wert. Nun möchte ich diese txt-Datei einlesen und in ihr nach bestimmten Wörtern Suchen, an diesen stellen die Datei auftrennen, neue Werte einfügen, wieder zusammenfügen und dann wieder in eine txt-Datei auslesen.

Das Problem beginnt schon beim Einlesen. Wie ich den rest hinbekomme habe ich schon durch studieren anderer Beiträge rausbekommen.

Ich habe schon einige Befehle ausprobiert und bis jetzt hat nur
Code:
ansatzweise funktioniert. Jedoch bekomme ich dabei eine Ein-Zeilen Matrix mit Leerzeichen zwischen jedem Buchstaben und jeder Zahl.

Ich bedanke mich im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.12.2013, 12:49     Titel:
  Antworten mit Zitat      
Poste einen Ausschnitt (3-4 Zeilen) der einzulesenden Datei, dann kann man dir besser helfen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
csToni
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 13:33     Titel:
  Antworten mit Zitat      
Hier ein Beispiel. Die gelb markierten Werte sollen geändert werden.

Bild1.png
 Beschreibung:

Download
 Dateiname:  Bild1.png
 Dateigröße:  172.11 KB
 Heruntergeladen:  387 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.12.2013, 14:52     Titel:
  Antworten mit Zitat      
Ist das eine XML Datei? Sieht zumindest so aus. Da könntest Du mit xmlread ein wenig spielen http://www.mathworks.de/de/help/matlab/ref/xmlread.html
Könnte der einfachste Weg sein aber auch ein Irrweg.

Alternativ regexp
http://www.mathworks.de/de/help/mat.....ml?searchHighlight=regexp
Vielleicht die schnellste Lösung aber am aufwendigsten zu implementieren.

Die "Stumpf ist Trumpf" Methode (Einfach, aber je nach Dateigröße ziemlich langsam). Datei öffnen und mit fgetl die Datei Zeile für Zeile durchgehen und mit strcmp oder strfind nach den gesuchen Zeilen ausschau halten und entsprechend die neuen oder die alten Daten schreiben.
Kann so aussehen, musst du aber nach Deinen Bedürfnissen anpassen!!
Code:
f=fopen('dateinedatei.irgendwas');
k=fopen('neuedatei.irgendwas','w'); %Die Datei wird neu angelegt
%# als schleife bis fgetl==-1
d=fgetl(f); % hole jede Zeile einzeln aus der Datei
if strcmp(d,'<column name ...')
  % hier die neuen Daten einfügen
  fprintf(k,'datein \n');
else
  % alte Daten schreiben
  fprintf(k,'%s \n',d);
end
%# Ende der Schleife
fclose(k)
fclose(f)
 



So oder so ähnlich. Es gibt garantiert noch ein paar andere Möglichkeiten.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
csToni
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 15:22     Titel:
  Antworten mit Zitat      
das Problem ist damit nicht gelöst. denn
Code:
erstellt eine z.B. <1x158 char> Matrix, wo jeder Bustabe oder jede Zahl als einzelner Wert existiert mit Leerzeichen-Werten dazwischen. Da ist dann nix mit suchen Sad

edit: hier die txt-Datei zum ausprobieren

Probe.txt
 Beschreibung:

Download
 Dateiname:  Probe.txt
 Dateigröße:  1.35 KB
 Heruntergeladen:  225 mal


Zuletzt bearbeitet von csToni am 12.12.2013, 15:34, insgesamt 3-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.12.2013, 15:28     Titel:
  Antworten mit Zitat      
Mit Leerzeichen dazwischen?
Nur wenn in deiner Quelldatei auch Leerzeichen zwischen jedem Zeichen sind.
Lad mal eine Beispieldatei mir 3-4 Zeilen hoch.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
csToni
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 15:33     Titel:
  Antworten mit Zitat      
gerade gemacht Smile siehe oben

edit: Problem gefunden! Lag an der Codierung der txt-Datei Smile

Zuletzt bearbeitet von csToni am 12.12.2013, 15:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.12.2013, 15:45     Titel:
  Antworten mit Zitat      
Das Encoding der Datei ist kaputt.

http://p.osuv.de/ekpf/


Danach geht es

Code:

>> f=fopen('Probe.txt')

f =

     4

>> k=fgetl(f)

k =

      <Parameter Name="Lz" Type="double" Value="0" MeasureBase="mm" Measure="mm"/>
 


Wenn du Linux benutzt, dos2unix einmal drüber laufen lassen. Ansonsten keine Ahnung....musst du herausfinden ob und wie Du das mit Matlab fixen/anders einlesen kannst.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 12.12.2013, 15:49     Titel:
  Antworten mit Zitat      
Ok, unter Windows sieht man die Problematik nicht.
Hier ein Screenshot
http://p.osuv.de/BwA/

Aber k.a. wo die Datei her kommt, bzw was diese Datei erzeugt hat und unter welchem Betriebsystem Du arbeitest...
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
csToni
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 15:49     Titel:
  Antworten mit Zitat      
Problem gefunden! Lag an der Codierung der txt-Datei .

thx
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 23:51     Titel:
  Antworten mit Zitat      
Warum verwendet man Matlab für ein Problem, für das Matlab absolut ungeeignet ist. XML-Dateien sind keine normalen Text-Dateien. XML wird in einen passenden Baum geparst, und kann dann mit einem einfachen xpath-Ausdruck bearbeitet werden. Notfalls kann man Matlab dazu mißbrauchen, die entsprechenden Java-Methoden aufzurufen, aber BITTE nicht irgendwie mit fget rummurksen!
Private Nachricht senden Benutzer-Profile anzeigen
 
csToni
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 03.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2013, 16:52     Titel:
  Antworten mit Zitat      
Sirius3 hat Folgendes geschrieben:
Warum verwendet man Matlab für ein Problem, für das Matlab absolut ungeeignet ist. XML-Dateien sind keine normalen Text-Dateien. XML wird in einen passenden Baum geparst, und kann dann mit einem einfachen xpath-Ausdruck bearbeitet werden. Notfalls kann man Matlab dazu mißbrauchen, die entsprechenden Java-Methoden aufzurufen, aber BITTE nicht irgendwie mit fget rummurksen!


Es hat schon seinen Sinn was ich mache Wink Es geht darum ein gewisses Programm mit verschiedenen Eingaben mit matlab zu steuern, und die Eingaben sind nunmal in solch einer Textdatei gespeichert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.