gpt4 book ai didi

java - 如何跳过解析不同格式的行。 Fasterxml csv 解析

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

我有这样的 csv 文件:

headerA;headerB;headerC
val1;val2;val3;
val4;val5;val6;
some_word;val7;

所以。最后一行不同。它不适合 headerA;headerB;headerC 格式。 some_word; 就像 val7 的子标题。

问题是:如何正确解析csv文档?如何获取此 val7 和其他值或跳过文件的最后一行?

我正在使用fasterxml来解析它。我的代码是:

CsvSchema bootstrapSchema = CsvSchema.builder()
.setColumnSeparator(';')
.setStrictHeaders(true)
.setUseHeader(true)
.build();
CsvMapper mapper = new CsvMapper();
MappingIterator<OuterData> readValues =
mapper.readerFor(OuterData.class).with(bootstrapSchema).readValues(outerDataContent);
return readValues.readAll();

最佳答案

好的。我用 xtext 解决了它。没那么困难,现在我有了 csv 文件的干净模型。

  1. 下载 eclise 安装
  2. 安装时选择 Eclipse DSL Tools
  3. 运行 eslise DSL
  4. 创建新项目“Xtext Project”。不要忘记勾选 Facets > Eclipse 插件
  5. 然后转到您的基本名称包 > src > [您的基本包]。在那里你会看到 *.xtext 文件
  6. 描述您的 .csv 文件
  7. 您将在附近看到 *.mwe2 文件。右键单击它 > 运行方式 > MWE2 工作流。它将生成您和 Eclipse 所需的一切
  8. 右键单击您的基本名称包 > 运行方式 > Eclipse 应用程序 > 启动运行时 Eclipse。它将运行 Eclipse 应用程序的新实例,但它将是您的 Eclipse 实例。在这里您应该使用 *.[your_extention] 文件创建新项目。 your_extention 是您在创建项目时在第一页上选择的扩展。
  9. 将 csv 文件内容放入此新文件中。

现在,如果您愿意,可以使用 Sample Reflective Ecore Model Editor 打开此文件(右键单击文件 > 打开方式 > Sample Reflective Ecore Model Editor)。在那里,您将看到您的 csv 文件以您之前在 *.xtext 文件中描述的方式“解析”。

现在,您需要创建 *.jar 文件以在您的 java 项目中实现它。那里没什么特别的。

mvn clean package install

我不记得了,但我想首先构建[您的基础包].parent 包,然后构建[您的基础包]。

==================

在你的java项目中你应该做这样的事情:

// init dsl model. It's standalone because it can work without eclipse and stuff
NameOfYourXtextProjectStandaloneSetup.doSetup();
NameOfYourXtextProjectStandaloneSetupGenerated ssg = new NameOfYourXtextProjectStandaloneSetupGenerated();
// get injector to get environment members
Injector injector = ssg.createInjector();

ByteArrayInputStream inputStream = new ByteArrayInputStream(yourCsvTextAsString.getBytes());
XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);

Resource resource = resourceSet.createResource(URI.createURI("name.[your_extention]"));
try {
resource.load(inputStream, Collections.EMPTY_MAP);
} catch (IOException e) {
log.error("Error while reading from resource");
return Collections.EMPTY_LIST;
}
return (List<TransactionsFile>) (EList) resource.getContents();

关于java - 如何跳过解析不同格式的行。 Fasterxml csv 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52796874/

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