2013-05-07 124 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/