对于我的编程课程,我已经获得了103MB的CSV文件。有一个中等大小的文件有40 000行,我估计一切都是大约30万行。我试图逐行对数据进行排序并将其转换为对象,但是一个字段非常不一致。
通常,整行是:
[电台号码],[参数说明的缩写],[参数说明],[日期(MM / DD / YYYY)],[时间]等...
然而,参数描述是不一致的。在其中,有不同的单词组合,格式甚至不相同。有时候事物是缩写的,有时候中间有一个空格,有时会有10个。
以下是参数说明字段的一些示例:
(化学),(过滤/未过滤)TOTAL
(化学)TOTAL,(过滤/未过滤)
电导率,25C
STREAM CONDITION
<化学品],溶解(无机/有机)另外......有时在化学品之后会出现“UNFILTERED REACTIVE”,有时会出现“UNFIL.REA”
请帮忙,因为我不知道如何组织参数说明字段。这些只是我在6 000行中发现的一些。我几乎看不到30万行,看看每行有什么。
此外,如果它有帮助,这是安大略省水流质量数据,我用Java编码(尽管伪代码是可以的。)
答案 0 :(得分:0)
如果Parameter Description
是唯一包含逗号的字段,则应该可以使用逗号作为分隔符split
行,并分别从开头和结尾开始提取其余字段。 (前两个和最后一个x结果字符串将分别对应一个字段。)
剩余的字符串将是Parameter Description
字段,可以再次组合在一起。别忘了恢复逗号......
答案 1 :(得分:0)
我对此有不同的方法
我也在我的项目中应用了相同的内容。
这可能会缩短整个内容的排序时间,与当前状态相比
并且根据 KarlP 的答案,您需要做一些额外的操作,这可能会导致更多的计算时间而不是正常
创建一个删除所有空格,逗号和任何其他特殊字符的方法,并且您也可以替换数字,因为当您使用 description (如字段)进行短路时,它们不能发挥良好作用
所以结果将是这样的
// fn_getOnlyText replaces all chars which don't play role in alphabetical sorting as per your case
fn_getOnlyText("Parameter Description");
然后使用这个新字段进行排序,这将是基于字典的排序,因此它将比原始内容快得多。