繁体   English   中英

使用CSVHelper仅从CSV行中获取第一列值

[英]Get only first column values from CSV rows using CSVHelper

我正在尝试解析CSV文件并提取每行中的第一个字符串,或提取在MS Excel中布局的第一列。 我将CsvParserRead()方法一起使用,该方法将string[]返回到row变量。 问题是,它返回每个单个值,所以我的输出看起来像这样:

20070330 00:00 // This is the value I want to reference
0.9312
0.9352
0.9298
0.9343

如何仅引用文件中这些位置的值,而又不放入计数器来跳过临时值?

在此处输入图片说明

using (TextReader reader = File.OpenText(folder))
      {
          var datesInCsv = new List<string>();
          var parsedCsv = new CsvParser(reader);
          while (true)
          {
              var row = parsedCsv.Read();
              if (row.IsNullOrEmpty())
              {
                  break;
              }
              foreach (var date in row)
              {
                  Console.WriteLine(date);
              }

              Console.ReadLine();
          }

      }

您将在此处显式将每个值打印到控制台:

foreach (var date in row)
{
    Console.WriteLine(date);
}

这个foreach循环遍历当前行的所有元素并打印它们。

将此循环替换为仅将打印第一个元素(索引为0)的循环:

Console.WriteLine(row[0]);

当然,如果该行为空,这可能会失败,因此您也需要检查一下。

您使用的CsvHelper库要求您在构建CsvParse类的实例时传递一个CsvConfiguration实例。 这对于让库理解并正确解析行很重要

最重要的是Delimiter属性的值。 换句话说,该字符用于将一个字段与下一个字段分开。
您应该查看CSV文件,并将适当的值放在下面。
(对于此示例,我使用了分号,但根据您的文件进行了更改)

在查看代码时,我还认为可以使用SkipEmptyRecords配置来简化代码。

using (TextReader reader = File.OpenText(folder))
{
    var datesInCsv = new List<string>();
    CsvConfiguration config = new CsvConfiguration();
    config.Delimiter = ";";
    config.SkipEmptyRecords = true;
    var parsedCsv = new CsvParser(reader, config);

    string[] row = null;
    while ((row = parsedCsv.Read()) != null)
    {
        // This IsNullOrEmpty doesn't exist according 
        // to Intellisense and the compiler.
        // if(row.IsNullOrEmpty) 

        // At this point the row is an array of strings where the first
        // element is the value you are searching for. No need of loops
        Console.WriteLine(row[0]);
        Console.ReadLine(); 
    }

}

CsvParser实例的Read方法将输入行相应地分隔为分隔符后,返回一个字符串数组。 此时,您只需要引用数组的第一个元素,而无需任何循环。

您需要“读取”记录并传递所需的“映射”参数。 通过索引或名称。

请参见上面详细介绍的每个部分:

https://joshclose.github.io/CsvHelper/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM