gpt4 book ai didi

java - 动态定义 CSV 文件的字段分隔符和文本限定符

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

我正在读取 csv 文件,其中以逗号 (,) 作为字段分隔符,以双引号 (") 作为文本限定符。以下是获取行列的代码:

row.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)")

工作正常。但我想动态指定我的字段分隔符和文本限定符,即它们将作为输入与 csv 文件一起传递。文件将根据输入字段分隔符和文本限定符进行解析。如何修改上面的正则表达式以动态获取字段分隔符和文本限定符。

编辑:我正在使用 Apache Commons CSV 来解析 csv 文件。但就我而言,标题行可以是文件中的任何行。并且无法将标题行索引传递给 Commons CSV 解析器。所以我将手动读取文件并获取标题行。将其列拆分为字符串数组并将其传递给解析器。另外,字段分隔符和文本限定符是用户定义的,因此需要在此基础上进行拆分。

最佳答案

uniVocity-parsers可以自动检测输入格式以发现要使用的分隔符/引号字符:

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

// turns on automatic detection of line separators,
// column separators, quotes & quote escapes
settings.detectFormatAutomatically();

// configures to skip a number of rows from the input and start parsing from there
settings.setNumberOfRowsToSkip(3);

// configures the parser to extract headers from the first parsed row
settings.setHeaderExtractionEnabled(true);

CsvParser parser = new CsvParser(settings);
List<String[]> rows = parser.parseAll(new File("/path/to/your/file.csv"));

免责声明:我是这个库的作者,它是开源且免费的(Apache 2.0 许可证)

关于java - 动态定义 CSV 文件的字段分隔符和文本限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196238/

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