如何逐行讀取文本文件。可以使用下面的代碼逐行讀取 JSL 腳本(實際上 JMP 會創建一個列表,每行作為一個列表項)。
myFile= open("$PATH\testScript.jsl");
我的CfLines = myFile[scriptBox(1)] << getLines();
但是,當我嘗試使用擴展名為“*.txt”的文本文件執行此操作時,JMP 會自動將其作為數據表打開,因此我無法使用此方法來獲取行(因為它不是腳本框!)
還有其他方法嗎? 我不想使用 loadTextFile() 函數,因為這會將整個文件抓取到字符串中。 理想情況下,我想打開文件,一次讀入每一行,然後執行正則表達式來提取我需要的數據!
回复:如何逐行讀取文本文件。JMP 不會流式傳輸文本文件。 您必須使用該解決方案來加載整個文件,然後分隔行。 您可以迭代列表中的項目(單獨的行)以確定它們是否符合您的標準。
或者,您可以將文本文件導入 Excel 工作簿,然後使用“文件”>“數據庫”>“打開表”或“文件”>“數據庫”>“查詢生成器”來定義 WHERE 子句以選擇要提取的行。
回复:如何逐行讀取文本文件。我有一個巨大的文本文件,但只想讀取和加載幾行。基本上想加載以 A_ 或 B_ 或 C_ 或 D_ 開頭的所有行。 if條件可以嗎?
回复:如何逐行讀取文本文件。儘管我一開始對 loadTextFile 函數保持沉默,但還是要對 Jeff 表示感謝。 所有三種方法都有效,因此我使用我們的一位測試人員提供的 250M、5M 行文本文件進行了快速時間比較。 順便說一句,我的用例是我需要逐行篩選這些巨大的日誌文件,並根據正則表達式表過濾出一些結果。
我想這不公平,因為我說過我想避免 loadTextFile ;)
***伊恩***
myNumSeconds = 66;
N 項(myCfLines)= 5059756;
***傑夫***
myNumSeconds = 7;
N 項(myLines)= 5059755;
*** 克雷奇 ***
myNumSeconds = 67;
N 項(myCfLines)= 5059756;
回复:如何逐行讀取文本文件。您可以打開一個“腳本”選項來完成這項工作:
打開(“$sample_data/../導入數據/bigclass.txt”,“腳本”)
現在,它將打開到一個腳本窗口,而不是作為“文本”打開(這是 .txt 擴展名的默認設置)並創建數據表。 是的,“文本”選項的命名很奇怪,但它指的是 CSV 文本。
回复:如何逐行讀取文本文件。JSL 目前沒有用於打開文件並一次讀取一行的工具。
但是,如果您確實使用加載文本文件()那麼你可以使用字()函數將各個行放入列表中。
bctxt=load text file ("$SAMPLE_IMPORT_DATA\Bigclass.txt");
lines=words(bctxt,"\!n");
回复:如何逐行讀取文本文件。如您所見,JMP 使用文件擴展名來嘗試執行適當的操作。
不確定我完全理解您的用例,但如果“.jsl”擴展名提供了您想要的行為,您可以考慮使用“RenameFile()”:
renameFile("$DESKTOP/Test.txt", "Test.jsl");
myFile = open("$DESKTOP/Test.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
renameFile("$DESKTOP/Test.jsl", "Test.txt");