我想知道是否有可能在不了解任何内容并将其制成CSV的情况下解析any定宽文件。我的直觉说不,因为可能存在一些极端情况。如果您知道宽度,但不知道列名,那很好。如果您知道列名,则可以计算出宽度,这样就可以了。但是,如果您没有两者,那么我可以想象,如果您有足够的逻辑,那么在实际开始解析之前读取文件一次就可以做到。 也许。但是,如果这也是一个约束(必须读取一次文件),那么您就不走运了,对吗?还要假设正在流式传输,因为文件为50GB,无法加载到内存中。因此,要克服我的目标和限制:
目标:要成功地转换没有宽度信息的固定宽度文件,最明显的是列名和宽度长度
约束:1.我期望文件很大,所以我必须将其流化,而不是将其加载到内存中,并且两次读取该文件的效率极低。2.我没有有关列名,宽度或任何其他内容的信息-我只是收到一个固定宽度的文件。
鉴于这些限制,目标是否可能?我知道,在简单的情况下,可以这样说:
Love Lucy Is Awesome
data datatat datad datadaa
嗯,随便吧。因为列名中没有空格,所以很容易。但是我无法真正弄清的是这样一个复杂的情况:
The Swimming Pool Is Dirty
data data data data
data datada data data data
我永远不知道“ Swimming Pool”是一栏,还是“ Swimming”和“ Pool”是两栏,直到通过该文件。如果我所有的行都指示四个记录,则“游泳池”是一列;五,那么它们是两列。
事实上,那只是一个假设;也许“ Pool”始终为空。我的意思是,即使是这种情况:
Swimming Pool
datadatadatat
我对固定宽度的文件了解不多,但是两个记录之间是否至少要有空格?可以将其翻译为:
Swimming, Pool
datadatad,atat
所以,我的难题向你展现。老实说,我什至不确定这种简单的情况是否真的很简单。也许Lucy Is .
是一列。第一次处理此文件类型(或什至真正听说过),并且想要专业人员的想法。
否 !!!
这是最简单的固定宽度文件可以通过这种方式传递。固定宽度的文件可以
对于固定宽度的文件,您需要一个文件描述(chema)
固定宽度文件的常见来源来自Cobol应用程序。Cobol定宽文件]
在此问题中查看文件