C# 解析一种csv文件

C# 解析一种csv文件,c#,.net,parsing,csv,C#,.net,Parsing,Csv,我有一种csv文件,带有一些额外的参数。我不想编写自己的解析器,因为我知道有很多好的解析器。问题是,我不知道是否有任何解析器可以处理我的场景。 我的csv文件如下所示: 我想先读ADM下面的第二行,所以在这个例子中是3行。我想读Prov之后的第二行 有没有什么好的解析器或读取器可以帮助我解决这个问题,我将如何编写来处理我的场景 我的文件扩展名也不是.csv,而是.lab,但我想这不会有问题吧 首先,我没有看到一种特定的语言来完成这项任务,而且读c已经太晚了。这是一个perl解决方案,但是有很好的

我有一种csv文件,带有一些额外的参数。我不想编写自己的解析器,因为我知道有很多好的解析器。问题是,我不知道是否有任何解析器可以处理我的场景。 我的csv文件如下所示:

我想先读ADM下面的第二行,所以在这个例子中是3行。我想读Prov之后的第二行

有没有什么好的解析器或读取器可以帮助我解决这个问题,我将如何编写来处理我的场景

我的文件扩展名也不是.csv,而是.lab,但我想这不会有问题吧

首先,我没有看到一种特定的语言来完成这项任务,而且读c已经太晚了。这是一个perl解决方案,但是有很好的注释,所以我希望它可以很有用并且很容易翻译成其他语言

假设测试文件填充如下:

script.pl的内容:

具有以下输出:

7
11
15
9
13
17

阅读下面第二行有什么好处?什么语言?您应该编写自己的解析器。这将是快速和简单的。当您得到答案并学习此处推荐的任何工具时,您可能已经完成了。如果这是在Linux/UNIX系统上,您可能可以使用诸如sed或awk之类的工具来完成大部分或全部工作。很抱歉,错过了语言,它是.net 4,使用c。我认为编写自己的解析器非常容易。市场上的解析器lib用于解析大量的常见案例,但您只需要解析特定案例。所以,您自己的解析器速度会快得多,您也可以在编写解析器时学习:谢谢。最后我编写了自己的解析器,并使用了其中的一些代码。
use warnings;
use strict;

## Assign empty value to read file by paragraphs.
$/ = qq[];

## Arrays to save second row of its section.
my (@adm, @prov);

## Regex to match beginning of section.
my $regex = qr/(?:#(?|(Adm)|(Prov)))/;

## Read file.
while ( <> ) { 

    ## Remove last '\n'.
    chomp;

    ## If matches the section and it has at least two lines...
    if ( m/\A${regex}/ and tr/\n/\n/ == 2 ) { 

        ## Group the section name ($1) and its second line ($2).
        if ( m/\A${regex}.*\n^(.*)\Z/ms ) { 

            ## Save line in an array depending of section's value.
            if ( $1 eq q[Adm] ) { 
                push @adm, $2; 
            }   
            elsif ( $1 eq q[Prov] ) { 
                push @prov, $2; 
            }   
        }   
    }   
}

## Print first lines of 'Adm' section and later lines of 'Prov' section.
for ( ( @adm, @prov ) ) { 
    printf qq[%s\n], $_; 
}

exit 0;
perl script.pl infile
7
11
15
9
13
17