CSVHelper无法解析我的制表符分隔CSV文件

t1qtbnec  于 2023-02-27  发布在  其他
关注(0)|答案(5)|浏览(205)

我正在尝试读取制表符分隔的CSV文件并使用CSVHelper解析它。
我有以下内容:

_reader = new StreamReader(_stream);
 _csvReader = new CsvReader(_reader);
 _csvReader.Configuration.Delimiter = "\t";

但读取器无法正确识别和解析该文件
有什么想法吗?
CSVHelper可能使用哪些分隔符?

6qfn3psc

6qfn3psc1#

因此,出于某种原因,它只有在我执行以下操作时才起作用:

_reader = new StreamReader(_stream);

 CsvHelper.Configuration.Configuration myConfig = new 
     CsvHelper.Configuration.Configuration();

 _csvReader.Configuration.Delimiter = "\t";

 _csvReader = new CsvReader(_reader, myConfig);
xj3cbfub

xj3cbfub2#

我在vb中解析制表符分隔的文件时遇到了类似的问题,直到我用vbTab替换了"\t"后才起作用
我的代码:

Imports System.Globalization
Imports System.IO
Imports CsvHelper
Imports CsvHelper.Configuration
Imports CsvHelper.Configuration.Attributes

Public Class TabDelimetedReader
    Public Shared Function ReadFile(path As String) As IEnumerable(Of TabFileDefinition)

        Dim config = New CsvConfiguration(CultureInfo.InvariantCulture,
            hasHeaderRecord:=False,
            delimiter:=vbTab)

        Using reader As StreamReader = New StreamReader(path)
            Using tsv = New CsvReader(reader, config)
                Return tsv.GetRecords(Of TabFileDefinition).ToList
            End Using
        End Using

    End Function
End Class
lh80um4z

lh80um4z3#

我遇到了类似的问题与制表符分隔的文件-我无法让分隔符=“\t”工作...
然后我在配置中添加了Encoding = Encoding.UTF8,然后它工作了!

yqlxgs2m

yqlxgs2m4#

虽然挖掘源代码有一个分隔符参数。下面的代码为我工作。

var config = new CsvConfiguration(CultureInfo.CurrentCulture) { Delimiter = "~" };
using var csv = new CsvReader(reader, config);

来源:https://github.com/JoshClose/CsvHelper/blob/master/src/CsvHelper/Configuration/CsvConfiguration.cs

qgelzfjb

qgelzfjb5#

原答复的最新情况。
(由于某种原因,作为新答案发布的原始答案不可编辑)
最初的答案当然是正确的。后来,CsvHelper API稍有改变。以下是当前CsvHelper版本(30.0.1)的代码:

var _reader = new StreamReader(_stream);

CsvHelper.Configuration.CsvConfiguration myConfig = new
    CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture)
    {
        Delimiter = "\t"
    };

var _csvReader = new CsvReader(_reader, myConfig);

相关问题