gpt4 book ai didi

java - 如何检测输入的csv文件是否嵌入了引号?

转载 作者:行者123 更新时间:2023-11-30 03:01:23 24 4
gpt4 key购买 nike

我正在编写一个工具,它接受 csv 文件输入,并创建一个新的 csv 文件作为输出,并修改了一些字段。在某些情况下,输入 csv 文件在逗号前后嵌入了引号,例如:“a”、“b”、“c”,而在其他情况下,我直接使用 a、b、c。我遇到的问题是,如果输入 csv 文件具有嵌入的引号,那么我希望生成的 csv 文件应该具有相同的嵌入引号。我知道我可以在 CSVWriter 的构造函数中控制此设置,如下所示:

CSVWriter writer = 
new CSVWriter(new FileWriter(csv), ',', CSVWriter.NO_QUOTE_CHARACTER)

但是如何检测我们遇到的是哪种情况呢?我应该编写一个正则表达式来计算引号字符的数量并将其与 的计数进行比较,看看它是否超过两倍?例如“a”、“b”、“c”有 6 个引号和 2 个逗号。

最佳答案

你可以尝试uniVocity-parsers检测格式:

CsvParserSettings parserSettings = new CsvParserSettings(); //many options here, check the tutorial.
parserSettings.detectFormatAutomatically();

CsvParser parser = new CsvParser(parserSettings);

//parse and get the detected format
List<String[]> parsedRows = parser.parseAll(new File("/path/to/input.csv"));
CsvFormat detectedFormat = parser.getDetectedFormat();

//now, write using the detected format:
CsvWriterSettings writerSettings = new CsvWriterSettings();
writerSettings.setFormat(detectedFormat);

CsvWriter writer = new CsvWriter(new File("/path/to/output.csv"), writerSettings);
writer.writeStringRowsAndClose(parsedRows);

披露:我是这个库的作者。它是开源且免费的(Apache 2.0 许可证)

关于java - 如何检测输入的csv文件是否嵌入了引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35845825/

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