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 einlesen - Leere Zeilen im Cell?

 

friesen
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 08.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2011, 10:30     Titel: Txt einlesen - Leere Zeilen im Cell?
  Antworten mit Zitat      
Hi Leute,

ich wollte eine Text-Datei einlesen. Die Datei besteht aus vielen Zeilen. In den einzelnen Zeilen sind die zu verarbeitenden Informationen mit einem Semikolon getrennt. Jetzt will ich nur bestimme Infos einlesen und ein Cell-Array/Matrix? (weiß leider nicht wie das heißt) einlesen. Das funktioniert aber leider noch nicht so, wie ich es gern haben wollte.

Bsp:
Code:

"Bla";123;"3-543-4";"Testbla"
"Bla2";14323;"3-543666-4";"Testbla2"
"Bla3";123235;"3-234543-4";"Testbla3"
 


Meine Funktion sieht wie folgt aus (ist jetzt nicht für das o.g. Beispiel angepasst)

Code:

function [info] = einlesen(Datei)

fprintf('Einlesen...')

% Datei oeffnen und einlesen. Es werden nur erforderliche Daten gelesen
fid=fopen(Datei);
info=textscan(fid,'%*s %*s %*s %*s %*s %*s %*s %s %*s %*s %s %*s %s %*s %*s %*s %s %*s %s %*s %*s', 'Delimiter', ';');
fclose(fid);

fprintf('fertig\n')
 


Problem ist, dass er immer eine Zeile im Cell-Array frei macht:
Code:

"Bla"

"Bla2"

"Bla3"
 



Wie bekomm ich das so hin?
Code:

Bla
Bla2
Bla3
 



Danke schon Mal
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 28.03.2011, 11:09     Titel:
  Antworten mit Zitat      
Hallo friesen,
nutze mal folgende Zeile:
Code:

info=textscan(fid,'%s %u32 %s %s', 'Delimiter', ';');
 


oder wenn du alles in einem array haben willst als string:
Code:

info=textscan(fid,'%s', 'Delimiter', ';');
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
friesen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 08.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2011, 11:26     Titel:
  Antworten mit Zitat      
Hi,

wie schon gesagt ist meine Funktion hier jetzt nicht an das Bsp. angepasst. Normalerweise sehen meine Zeilen so aus:

Code:

"ABC";"CBA";65434543;"4-2323-";"ADFJHF";"ASDFASF AFAF' AGD B987/789/987";"VDAS";"C9";"ASCASCASC";"SRZRFH";"OJHNO-D";833;"9SAFD";4;6;"AGSCA";"OASHC8AC";"4334";25.11.2009 22:28:00;25.11.2009 22:28:00;25.11.2009 22:23:30;25.11.2009 22:23:32;25.11.2009 22:40:40
 

Dann sollte meine Funktion ja das richtige machen, oder? Ich will ja nur bestimme Werte rauslesen.


Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 28.03.2011, 12:44     Titel:
  Antworten mit Zitat      
Hallo friesen,
das hat mit dem zeilenumbruch am Ende jeder Zeile zu tun.

Folgendes sollte funktionieren:
Code:

info=textscan(fid,'%*s %*s %*s %*s %*s %*s %*s %s %*s %*s %s %*s %s %*s %*s %*s %s %*s %s %*s %*s %*[^\n]', 'Delimiter', ';');
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
friesen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 08.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2011, 13:01     Titel:
  Antworten mit Zitat      
Super. Daran lags. Danke.

Und wie bekomm ich noch die Anführungsstriche weg?


Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.03.2011, 13:52     Titel:
  Antworten mit Zitat      
Hallo friesen,

Am leichtesten in den eingelesenen Daten:
Code:

data = info{1};  % Glaube ich, bei Bedarf anpassen
data = strrep(data, '"', '');

Bemrkung: Die Anführungszeichen sind hier verwirrend dargestellt, deswegen nochmal in Worten:
STRREP(data, < quote >< doublequote >< quote >, < quote >< quote >)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 28.03.2011, 14:01     Titel:
  Antworten mit Zitat      
oder direkt in der Variablen

Code:

info{1} = strrep(info{1},'"','');
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
friesen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 08.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2011, 16:20     Titel:
  Antworten mit Zitat      
Super. Hat einwandfrei funktioniert. Danke schön!


Grüße
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.