gpt4 book ai didi

java - 如何在向文件添加更多行的同时动态添加 CSV header

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:23 25 4
gpt4 key购买 nike

客户正在向我发送键值对列表,我需要将其附加到带有标题的 CSV 文件

lang=java                           lang, version, maven
version=1.8 -----> java, 1.8, true
maven=true

另一个输入可能是:

lang=C#                           lang, version, maven
version=7.2 -----> java, 1.8, true
maven=false C#, 7.2, false

列表的数量可能有几百万,所以我需要将数据刷新到磁盘,并且不能将其全部保留在内存中。

由于 key 列表是由客户端确定的,我想使用他的第一个输入来确定 CSV 文件的标题:

org.apache.commons.csv.CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(x, y, z ...)));

从那时起,仅在相关列中附加值:

csvPrinter.printRecord(xValue, yValue, zValue.....)

但是,这是一个顽皮的客户,有时他会发送我以前从未见过的新 key :

lang=java
meetMeAt=London
version=1.4
maven=false

此时,我如何向 CSV 添加另一个 header ?

首先将所有列表保存到不带标题的 csv 文件,将所有标题累积到程序内存中,然后创建另一个包含所有标题的文件并将第一个文件中的记录复制到其中,怎么样?合理吗?

最佳答案

您提出的解决方案存在我们需要解决的问题:

lang=java                           java, 1.8, true
version=1.8 ----->
maven=true

lang=java java, 1.8, true
version=1.8 -----> ???
gradle=true

你想如何表达这一点?添加另一列?当您不知道列标题时,如何知道需要添加另一列?

如果您有能力读取输入两次,我建议您在第一次读取时收集标题,然后使用已知的列标题和位置重新读取。

如果您只需要读取输入一次,您的想法可以这样工作:

  • 将标题和相应的列位置保留在内存中
  • 编写不带标题的 CSV,但将所有数据放入正确的列中
    • 请注意,列数可能会增加,第一行的列数少于最后一行的列数
  • 完成原始输入后,重写输出 CSV:
    • 将标题放在第一行
    • 将缺失的列添加到短于最终列数的所有行

关于java - 如何在向文件添加更多行的同时动态添加 CSV header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50199174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com