2013-05-07 84 views
-4

我正在嘗試編寫轉換以從一種格式獲取數據以將其作爲csv呈現。 該文件的當前格式,例如對電子表格中的單行,只與列ID字段將被拉到將批量數據轉換爲.csv

01*A*B*C*D*E*F*G*H*I*J*K*L*M* 
02*N*O*P*Q*R* 
03*S*T*U*V*W*X*Y*Z*AA*AB*AC*AD*AE* 
04********** 
04********** 
04********** 
05*AF*AG* 
06*AH*AI*AJ*AK* 
06*AL*AM*AN*AO* 
07*AP*AQ* 
07*AR*AS* 
08*AT*AU*AV*AW*AX*AY*AZ*BA*BB*BC*BD*BE* 
09******* 

的問題是,隨着04和06開頭的行可以在數量上有所不同取決於該清單所含數據的數量。所有以04和09開頭的行將被忽略,任何以06開頭的行超過前兩行都將被忽略,但如果只有一行以06開頭,則需要保留第二列。我不挑剔語言這一點,只要我可以在Windows中完成,我只是用自己有限的編程經驗打磚牆

+0

你寫過什麼代碼? – 2013-05-07 14:53:02

+0

...用什麼語言?因爲它只是文本過濾(我認爲?)你認識的最合適的語言是什麼? – Rup 2013-05-07 14:53:38

回答

1

您的示例數據是一種相對常見的EDI格式,因此您需要克服是要知道你的記錄何時開始以及何時完成。通常情況下,您將文件流讀入新行(換句話說,您一次只讀1行)。當檢測到記錄的入口點時,以示例中的「01 *」開頭的行,創建一個內部循環來讀取行,以包含或忽略,具體取決於您的特定需求。一個對象可以很容易地加載到循環中。一旦記錄完成(通過你的「09 *」),你就可以得到一個代表記錄的對象,可以用於進一步處理,保存,導出......無論你需要做什麼。

我認爲對您來說更大的問題是您的自我陳述有限的編程經驗。你沒有具體說明你使用的是什麼語言?我建議您不要試圖直接解決某個特定問題,而是建議您熟悉開發語言和考慮您的目標平臺的優點/缺點。此外,我建議不要將文件I/O作爲您編程的第一次體驗之一,因爲存在太多的陷阱。 我不會把你的問題變成了「什麼是最好的語言」的爭論,但給這些讀,並決定,如果你能奉獻一些時間來進一步學習 -

如果您沒有免費週期來學習某種特定語言,那麼我可以推薦一些非常強大的「數據轉換」產品(又名ETL工具)。通過這些可視化工具,您可以定義源文件,提供數據的方式以及如何改變輸出。這些爲非程序員提供了很多選擇,並且在許多情況下可以像定製的書面軟件一樣好。 下面是我在過去有很多成功的用這樣一種工具 -

http://www.pentaho.com/explore/pentaho-data-integration/