如何解析非分隔平面文件

问题描述 投票:0回答:1

我有一些平面文件,每行大约有 300 个字符。 数据没有任何类型的分隔符,我想解析文件以在字段之间引入某种分隔符。 实际上,每行包含大约 50 个不同长度的不同字段。 所有的线条都排列得很好。 我试图找到一种方法,可以标记一行中的字段并将其扩展到所有行。 每个文件大约有 250 万行。 我不是程序员,所以我真的需要一些已经可以工作的东西。 我一直在尝试将文件分成几个部分并使用 Excel,但这对我的计算机系统(Windows、8Gb RAM)造成了负担。

我找到了一个 VBA 程序,可以将文件加载到多个 Excel 工作表中。然后我使用 Excel 来解析数据,但这对系统造成了严重的负担。下面是一些记录的示例。数据字段的长度从 1 到 10 个字符不等。由于该文件有 300 万条记录,我希望以某种方式在顶行引入一个分隔符,并将其引入到所有其余记录中。 –

这是数据,记录更长,但你明白了。空格不一定指定字段分隔符

11MD122MD4MD MD122999999 MD 4 TX WI 3101 M1088 412110 1D8
11AK122AK4AK AK122999999 AK 4 TX VT 5101 M1066 432311 1W7

有些字段可能有 5 个字符,但只包含 4 个可见字符,最后一个字符是空格。这样就允许所有记录具有相同的总长度。在我展示的示例数据中,前 12 个字符代表 7 个字段。我需要解析这个。剩下的记录基本相同。 Excel VBA 文件仅提取记录。每条记录都包含在一个 Excel 单元格中,然后需要进行解析。

鼓莫2a 4 分钟前 编辑

谢谢

windows parsing text flat-file
1个回答
0
投票

使用 foreach 读取,因此您正在逐行处理。 每行都在 do 循环中的某个变量中,并按开始和结束位置解析字符串。请记住,Ruby 从 0 而不是 1 开始数组。

假设您的上述字段是: 2字节字段1 2字节字段2 3字节字段3 ...

File.foreach(文件名) 做 |line| 字段1 = 行[0,1] 字段2 = 行[2,3] 字段3 = 行[4,6] ...

--调用数据库并写入一行? --用数据做你想做的事,比如建立字典?

结束

在 do 循环中,通过将字符串视为数组来解析每一行: 记住 ruby 数组从零开始

© www.soinside.com 2019 - 2024. All rights reserved.