Come faccio a leggere in un file di testo riga per riga.È possibile leggere uno script JSL riga per riga (in realtà JMP crea un elenco con ogni riga come voce di elenco) utilizzando il codice seguente.
mioFile= open("$PERCORSO\testScript.jsl");
myCfLines = mioFile[scriptBox(1)] << getLinee();
Tuttavia, quando provo a farlo con un file di testo che ha un'estensione "*.txt", JMP lo apre automaticamente come una tabella di dati e quindi non posso usare questo metodo per ottenere le righe (poiché non è una casella di script!)
C'è un altro metodo? Non voglio usare la funzione loadTextFile() in quanto raschia il file whold in una stringa. Idealmente mi piacerebbe aprire il file, leggere in ogni riga una alla volta e fare una regexp per estrarre i dati di cui ho bisogno!
Ri: Come leggo in un file di testo riga per riga.JMP non esegue lo streaming sul file di testo. Dovresti utilizzare la soluzione per caricare l'intero file e quindi separare le righe. È possibile scorrere gli elementi nell'elenco (singole righe) per determinare se soddisfano il criterio.
In alternativa, è possibile importare il file di testo in una cartella di lavoro di Excel e quindi utilizzare File > Database > Apri tabella o File > Database > Generatore di query per definire la clausola WHERE per selezionare le righe che si desidera estrarre.
Ri: Come leggo in un file di testo riga per riga.Ho un enorme file di testo ma voglio leggere e caricare solo poche righe. Fondamentalmente voglio caricare tutte le righe che iniziano con A_ o B_ o C_ o D_. Se la condizione può funzionare?
Ri: Come leggo in un file di testo riga per riga.Devo dare il merito a Jeff su questo nonostante la mia reticenza iniziale sulla funzione loadTextFile. Tutti e tre i metodi funzionano, quindi ho fatto un rapido confronto temporale utilizzando un file di testo da 250 M, 5 M Line di uno dei nostri tester. Per inciso, il mio caso d'uso è che ho bisogno di setacciare questi enormi file di registro, riga per riga, e filtrare alcuni risultati in base a una tabella di espressioni regolari.
Suppongo che questo non sia giusto perché ho detto che volevo evitare loadTextFile;)
***Ian***
myNumSeconds = 66;
N Articoli(myCfLines) = 5059756;
***Geff***
myNumSeconds = 7;
N Articoli(myLines) = 5059755;
*** Craig ***
myNumSeconds = 67;
N Articoli(myCfLines) = 5059756;
Ri: Come leggo in un file di testo riga per riga.C'è un'opzione "script" che puoi dare all'apertura per far funzionare questo:
open("$sample_data/../Import Data/bigclass.txt","script")
Ora, invece di aprirsi come "testo" (che è l'impostazione predefinita dell'estensione .txt) e creare una tabella di dati, si aprirà in una finestra di script. Sì, l'opzione "testo" è stata chiamata in modo strano, ma si riferisce al testo CSV.
Ri: Come leggo in un file di testo riga per riga.JSL attualmente non dispone di strumenti per aprire un file e leggerlo una riga alla volta.
Tuttavia, se usi Carica file di testo() allora puoi usare il Parole() funzione per inserire le singole righe in un elenco.
bctxt=load text file ("$SAMPLE_IMPORT_DATA\Bigclass.txt");
lines=words(bctxt,"\!n");
Ri: Come leggo in un file di testo riga per riga.Come puoi vedere, JMP utilizza le estensioni dei file per provare a fare una cosa appropriata.
Non sono sicuro di aver compreso completamente il tuo caso d'uso, ma se un'estensione '.jsl' fornisce il comportamento che desideri, potresti prendere in considerazione l'utilizzo di 'RenameFile()':
renameFile("$DESKTOP/Test.txt", "Test.jsl");
myFile = open("$DESKTOP/Test.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
renameFile("$DESKTOP/Test.jsl", "Test.txt");