我有一个大的(75MB)数据文件(EMP.txt),看起来像
01ABCD FIT PROGRAMMER30000EFGH
02IJK LMMACCOUNTS MANAGER 50000OPQRST UV
等等。 我有一个数据文件的结构文件(EMPSTRU.txt),看起来像
001 EMPID LENGTH 2
002 EMPNAME LENGTH 10
003 SEX LENGTH 1
004 DEPARTMENT LENGTH 10
005 DESIGNATION LENGTH 10
006 SALARY LENGTH 5
007 SUPERNAME LENGTH 10
现在我如何将数据文件解析为csv格式?我正在使用slice方法从数据文件中提取。此外,还有至少150个字段名称。有没有更好的方法在python中获取列名?目前我手动输入它们像
EMPID = Dataline(0:2)
请帮忙。 感谢。
答案 0 :(得分:1)
您可以将final Map<Integer, Set<String>> strByLength = s
.collect(Collectors.groupingBy(String::length, Collectors.toSet()));
文件直接解析为EMPSTRU.txt
可用的说明,例如
struct.unpack
输出
import struct
print(struct.unpack("2s3s2s", "abcdefg"))
在你的情况下,它应该需要......(未经测试)
["ab", "cde", "fg"]
然后您可以使用以下内容提取数据记录:
import struct
rdef = ""
colnames = []
for L in open("EMPSTRU.txt"):
L = L.strip()
lpos = L.rindex(" LENGTH ")
rdef += L[lpos+8:] + "s"
colnames.append(L[4:lpos]) # skip field number
并使用
将其重写到目标文件content = struct.unpack(rdef, record)