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

Hilfe bei Auslesen einer Textdatei

 

seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2008, 16:49     Titel: Hilfe bei Auslesen einer Textdatei
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem und freue mich über jeden Tip den ich bekommen kann.
Ich habe verschiedene Textfiles mit folgendem Schema:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
________________________________
t
t
c
g
....
xxxxxxxxxxxxxxxx
xxxxxxx
g
t
t
....
In diesem Text kommen zwischendurch immer diese einzelnen Buchstaben vor - diese sind für mich von Interesse.

Im Endeffekt will ich in einer Excel-Tabelle Statistiken erstellen, wo ich sagen kann wieviel t,g,usw. in den einzelnen Blöcken vorkommen.

Ein Riesenproblem ist nun, dass keine festen Zeilen für diese Variablen vorgesehen sind.

Ich hoffe mal, dass ich mein Problem in dieser kürze gut genug erläutern konnte.

Schonma Danke!!!

Gruß Sepp


Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 08.09.2008, 17:12     Titel:
  Antworten mit Zitat      
Hallo Sepp,

wenn diese Buchstaben immer in der ersten Spalte einer Zeile auftreten, müßte es folgendermaßen gehen:

Code:

datei = fopen('dateiname');
t=0;
g=0;
c=0;
zeile = fgetl(datei);
while (zeile)
  switch zeile(1)
    case 't'
      t = t + 1;
    case 'g'
      g = g + 1;
    case 'c'
      c = c + 1;
  end
  zeile = fgetl(datei);
end
fclose(datei);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2008, 10:39     Titel:
  Antworten mit Zitat      
Danke... bringt mich schonmal weiter!!!

Jetzt hab ich das Problem, dass im Text zufällig auch Worter in der Zeile anfangen die z.b. mit nem 't' beginnen... die sollen natürlich net mitgezählt werden.
Und ich hab leider auch Variablen mit zwei Buchstaben, wie berücksichtige ich denn die zweite Spalte.

Und wie umgehe ich leere Zeilen... sobald eine kommt zählt Matlab nicht mehr weiter.

Vielen Dank für die Hilfe
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.09.2008, 11:32     Titel:
  Antworten mit Zitat      
So sollte es gehen:

Code:

datei = fopen('text.txt');
t=0;
g=0;
c=0;
xx = 0;
zeile = fgetl(datei);
while (ischar(zeile))
  if strcmp(zeile, 't')
    t = t + 1;
  elseif strcmp(zeile, 'g')
    g = g + 1;
  elseif strcmp(zeile, 'c')
    c = c + 1;
  elseif strcmp(zeile, 'xx')
    xx = xx + 1;
  end
  zeile = fgetl(datei);
end
fclose(datei);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2008, 11:40     Titel:
  Antworten mit Zitat      
Funzt ja wunderbar...
danke!!!

Ist es sehr umständlich auch noch zwischen einzelnen Blöcken unterscheiden zu können???

Also
dfdfdfdfdfdfsfdafd
sdfsf

t
t >> t=2 g=1
g

dfsdgsfsavcx >> t=5 g=1
sgfsfg

t
t >> t=3
t
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.09.2008, 11:48     Titel:
  Antworten mit Zitat      
Mit
Code:

kannst Du Leerzeilen detektieren, dann weißt Du, wo ein neuer Block beginnt.
Private Nachricht senden Benutzer-Profile anzeigen
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2008, 11:54     Titel:
  Antworten mit Zitat      
Werds mal probieren.....
Mir ist gerad eingefallen dass hinter den einzelnen Variablen auch mal Kommentare hinzugefügt werden könnten, kann man noch irgendwie ne Bedingung hinzufügen - lässt sich das leicht realisieren Very Happy

Tausend Dank - Bist mir ne Riesenhilfe
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2008, 11:57     Titel:
  Antworten mit Zitat      
bzw....

was kann man denn machen wenn man in nem Textfeld zwischendrin Tabellen - also mehr als nur eine Spalte hat??
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.09.2008, 13:50     Titel:
  Antworten mit Zitat      
Mit den Kommentaren wird es noch ein wenig komplizierter. Man kann z. B. nur die erste zusammenhängende Zeichenkette von Beginn der Zeile extrahieren:
Code:

spalte = strfind(zeile, ' ');
zeile = zeile(1:(spalte-1));
 

Oder man extrahiert alles bis zum Kommentarzeichen (z. B. "%"), dann aber funktioniert der Vergleich mit strcmp aufgrund der potentiellen Leerzeichen nicht mehr:
Code:

spalte = strfind(zeile, '%');
zeile = zeile(1:(spalte-1));
 

Bei Tabellen wäre jetzt die Frage, ob die zu zählenden Zeichen immer nur am Anfang der ersten Spalte auftauchen können. Falls ja, kann man so verfahren wie mit Kommentaren. Falls nein, ergäbe sich das grundsätzliche Problem, zwischen Textabsätzen und Tabellen zu unterscheiden.
Private Nachricht senden Benutzer-Profile anzeigen
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2008, 13:59     Titel:
  Antworten mit Zitat      
Die zu zählenden Zeichen kommen immer am Anfang...
wenn ein Kommentar hinzugefügt wird ist zumindestens ein Leerzeichen dazwischen!!!

Wäre gut wenn ich diese Kommentare dann später seperat anzeigen kann.
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 09.09.2008, 14:24     Titel:
  Antworten mit Zitat      
auch das geht natürlich:
Code:

kommentar = zeile(spalte:length(zeile));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2008, 16:34     Titel:
  Antworten mit Zitat      
zeile = fgetl(fid);
while (ischar(zeile))
if strcmp(zeile, 't')
t = t + 1;
elseif strcmp(zeile, 'c')
c = c + 1;
elseif strcmp(zeile, 'a')
a = a + 1;
elseif strcmp(zeile, 'ci')
ci = ci + 1;
elseif strcmp(zeile, 'co')
co = co + 1;
elseif strcmp(zeile, 'di')
di = di + 1;
elseif strcmp(zeile, 'do')
do = do + 1;
elseif strcmp(zeile, 's')
s = s + 1;
end
zeile = fgetl(fid);
end
fclose(fid);

Das läuft jetzt wunderbar.... Nur das "Tabs" net als Leerzeichen gelten....
Weiß jmd. wie ich die umgehen kann????
Kommt leider hin und wieder mal vor Confused
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2008, 16:52     Titel:
  Antworten mit Zitat      
Hab ne Lösung Smile

zeile = strrep(zeile, ' ', '');
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 11:14     Titel:
  Antworten mit Zitat      
Wie könnte man die beiden Befehle denn miteinander verknüpfen??
Hab jetzt nämlich Zeilen, wo es mir nur auf den Anfang einer Zeile ankommt und wo auch andere Sachen dabeistehen.

Code:
datei = fopen('text.txt');
t=0;
g=0;
c=0;
xx = 0;
zeile = fgetl(datei);
while (ischar(zeile))
  if strcmp(zeile, 't')
    t = t + 1;
  elseif strcmp(zeile, 'g')
    g = g + 1;
  elseif strcmp(zeile, 'c')
    c = c + 1;
  elseif strcmp(zeile, 'xx')
    xx = xx + 1;
  end
  zeile = fgetl(datei);
end
fclose(datei);



datei = fopen('dateiname');
t=0;
g=0;
c=0;
zeile = fgetl(datei);
while (zeile)
  switch zeile(1)
    case 't'
      t = t + 1;
    case 'g'
      g = g + 1;
    case 'c'
      c = c + 1;
  end
  zeile = fgetl(datei);
end
fclose(datei);
(alt+c)
 
seppel222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 11:37     Titel:
  Antworten mit Zitat      
und wie kann ich denn ne Zeile (mit dem gesuchten Begriff am Anfang) komplett in ne Exelzeile übernehmen.

Und wie kann man festgelegte Zeilen rauslesen.... z.b. Zeile 1-5

Tausend Dank für eure Hilfe
Der blutige Anfänger
 
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 - 2024 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.