2013-07-02 17 views
0

我有一系列的ASCII文件保存爲一個表中的數據,例如:導入ASCII表作爲數組

1 100 2.345 
2 342 8.233 
3 65 89.23 

我經過短短几年的工作剛剛返回到Ç在Python中,想知道是不是已經有任何庫可以做到這一點?像Python中的numpy.loadtxt()?例如輸出一個浮點數或雙數組?我記得在過去我不得不自己寫一個程序來做這個工作,在C(例如C99)中,是否有任何標準包會執行導入?如何將結果保存到ASCII文件?我可以自己編寫一個程序,但我不想重複其他人在我之前完成的工作!

回答

1

我寫了我自己的圖書館來做到這一點(在這裏的善良人士的幫助下,我很快就回答了我的問題),你可以看到它here。它將數據表(具有未知數量的標題,列和行)轉換爲可在程序中使用的C數組。我將不勝感激任何建議。謝謝。

1

對於機器生成的文件以規定格式,fscanf()可以工作得很好:

int index; 
int x; 
double y; 

while (fscanf(infile, "%d %d %lf\n", &index, &x, &y) == 3) { 
    /* ... */ 
} 

如果你希望能夠與任意數量的列來處理的文件,只是有送入的數據結構的文件您稍後可以搜索或操作,那麼使用程序或腳本以CSV或XML格式生成相同的表格可能會更好。然後,使用類似libcsvMini-XML的庫爲您解析文件。

+0

謝謝,是不是有更通用的方法,例如數據中的列數不必事先知道?或者在表格有50列的情況下!手工指定所有列格式並根據每個特定表格定義變量是不切實際的! – makhlaghi

+0

要實現您想要的目標,最好的方法是編寫一個程序,將任意文本錶轉換爲CSV或XML格式,並使用現有的庫,根據這些輸入爲您生成數據結構。 – jxh

+0

你可以請我介紹一些這些「現有的圖書館」? – makhlaghi