-4

我正在尝试编写转换以从一种格式获取数据以将其呈现为 csv。文件的当前格式是电子表格上的单行,并且只会提取具有列 ID 的字段

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中做到这一点,我对语言并不挑剔,我只是用自己有限的编程经验碰了壁

4

1 回答 1

1

您的示例数据是一种相对常见的 EDI 格式,因此您需要克服的问题是知道您的记录何时开始以及何时结束。通常,您将文件流读取到换行符(换句话说,您一次读取 1 行)。当检测到记录的入口点时,在您的示例中以“01 *”开头的行,您创建一个内部循环来读取要包含或忽略的行,具体取决于您的特定需求。一个对象可以很容易地加载到循环中。一旦记录完成(通过您的“09*”),您就会拥有一个代表记录的对象,该对象可用于进一步处理、保存、导出......无论您需要做什么。

我认为对您来说更大的问题是您自称有限的编程经验。您没有具体说明您使用的是什么语言?我建议您熟悉开发语言以及考虑到您的目标平台的优缺点,而不是试图立即解决特定问题。此外,我建议不要将文件 I/O 作为您第一次编程的经验之一,因为存在太多陷阱。我不会将您的问题变成“什么是最好的语言”辩论,但请阅读这些内容并决定您是否可以花一些时间进一步学习 -

如果您没有足够的时间来学习特定语言的任何程度,我可以推荐一些非常强大的“数据转换”产品(又名 ETL 工具)。使用这些可视化工具,您可以定义源文件、如何提供数据以及如何改变输出。这些为非程序员提供了很多选择,并且在许多情况下可以与定制编写的软件一样好。这是我过去成功使用过的一种工具-

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

于 2013-05-07T19:38:07.780 回答