我有几个MB文本文件,其中随机数据类型用逗号分隔:
bgh5w,12,5.223,ab4ft55,....
只有四种类型的数据:整数,浮点数,字母数字和字母数字。 如何以列形式打印出数据类型?:
bgh5w - 字母数字
12 - 整数
5.223 - 浮动
ab4ft55 - 字母数字
。 。
答案 0 :(得分:0)
通常不可能。 CSV数据必须附带元数据,即有关数据本身的信息。
但是,.... 您可以做的是读取文件的某些部分(或完全读取它),并使用启发式方法确定每个列使用哪种数据类型。然后进行第二遍读取数据并将其转换为适当的数据类型(在第一遍中找到)。
在第一遍中,您可以保留关于每列的一些真/假(也称为布尔)信息,例如“hasDecimalDigit”(如果在某行中找到字符“0”到“9”),“hasHexadecimalDigit”(对于字符'a'到'f'),“hasPeriod”(用于'。'),“hasMoreThanOnePeriod”(用于'。',当“hasPeriod”已经为真时),“hasAlphaCharacter”(用于字符'a'到'z' ), 等等。读取任意数量的行后,您可以决定信息集的特定模式,哪种数据类型适用(例如:hasDecimalDigit&!hasHexadecimalDigit&!hasAlphaCharacter&!hasPeriod - > datatype = int,format = decimal)
答案 1 :(得分:0)
如果您有文本文件,则您拥有的唯一数据类型是String。我的建议是使用一个映射文件,你可以在其中查找#列到一个数据类型,此时你的进程加载数据应该非常简单。映射文件应与CSV一起提供,因为需要深入了解CSV中包含的数据的性质。