POSIZIONE IN FILE TESTO

di Anonimizzato23147 il
4 risposte
Buonasera,
avrei una domanda..ho un file testo che contiene numeri e parole..all'interno di esso dovrei cercare un termine e ricopiare i numeri sottostanti..

4 Risposte

  • La domanda è troppo vaga per poter tentare di dare una qualunque risposta:
    [*] qual è la struttura del file di testo?
    [*] come si identifica il termine di interesse?
    [*] come sono definiti (scritti) i numeri nel file di testo?

    Dovresti, come minimo, pubblicare un esempio (un estratto) significativo del file di testo (al limite potresti condividere il file su "DropBox" o qualcosa di simile) e le indicazioni sull'output atteso.

    Non sarebbe male se pubblicassi anche il codice che hai scritto fino a questo momento, anche se "non funziona" in modo che ti si possa dare qualche suggerimento.
  • Buongiorno,
    allora il mio problema è: avendo un file testo ho delle righe di dati che si ripetono e che devo estrapolare..queste righe sono posizionate ogni volta nella riga sottostante quella che inizia con la parola 'parola'..quindi ho provato così e funziona..ma 'data' mi restituisce solo una riga e non tutte..

    close all
    fid=fopen('myfile.tb');

    R=textscan(fid,'%s','delimiter','\n');
    R=R{1};
    for i=1:length(R)
    idx=find(not(cellfun('isempty',strfind(R,'parola'))));
    idxx=idx+1;
    end
    fclose(fid);
    if true
    fid=fopen('myfile.tb');
    F=textscan(fid,'%s','delimiter','\n');
    K=idxx;
    for h=1:length(K)
    D=F{1}(K(h));
    dataTxt = sprintf('%s\n',D{:});
    data = textscan(dataTxt,'%f %f %f \n');
    %data=data{1}
    end
    fclose(fid);
    end
  • Come ho scritto nella risposta precedente, senza il file di testo di input (od un sui esempio significativo) non si può verificare il codice.
    Hai provato ad eseguire il codice in modalità debugger?
    Hai verificato il valore delle variabili nel corso dell'esecuzione?

    Quello che si può dire, leggendo il codice, è che, nel secondo loop, la variabile "data" viene sovrascritta ad ogni iterazione per cui, alla fine, dovresti avere solo l'ultima serie di dati.

    Ammesso che le istruzioni precedenti funzionino (e senza il file di testo non lo si può verificare), dovresti trasformare la variabile "data" in una matrice, qualcosa del tipo
    
       data=[]
       for h=1:length(K)
          D=F{1}(K(h));
          dataTxt = sprintf('%s\n',D{:});
          data(h,:) = textscan(dataTxt,'%f %f %f \n');
          %data=data{1}
       end
    
    ma non possibile verificare la correttezza di questa soluzione.
  • Grazie..ho risolto
Devi accedere o registrarti per scrivere nel forum
4 risposte