首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CsvReader未应用配置

CsvReader未应用配置
EN

Stack Overflow用户
提问于 2019-04-05 14:19:56
回答 2查看 1.2K关注 0票数 1

我正在尝试解析一个CSV文件,其中一些行被“#”字符注释掉了。

我使用CsvHelper Configuration类来设置CsvReader的配置。但是,它似乎没有注册,并且仍然将我的注释行作为输入。

代码语言:javascript
复制
var config = new Configuration
{
    Delimiter = ",",
    Comment = '#',
    Quote = '"',
    HasHeaderRecord = false,
};

using (var stream = new StreamReader(filepath))
using (var reader = new CsvReader(stream, config))
{
    while (reader.Read())
    {
        BsonDocument doc = new BsonDocument
        {
            { "A", reader.GetField(0)},
            { "B", reader.GetField(1)},
            { "C", reader.GetField(2).ToLower()},
            { "D", reader.GetField(3)},
            { "E", Convert.ToBoolean(reader.GetField(4))},
            { "F", Convert.ToBoolean(reader.GetField(5))}
        };
    }
}

我的input.csv文件中的一个数据示例:

代码语言:javascript
复制
#fieldA,fieldB,fieldC,fieldD,fieldE,fieldF
valueA,valueB,valueC,valueD,true,false
valueA,valueB,valueC,valueD,true,false
#valueA,valueB,valueC,valueD,true,false
valueA,valueB,valueC,valueD,true,false
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-05 17:02:07

只有下面的方法有效。或者,如果注释字符是默认的'#‘,则不能显式声明注释字符。

代码语言:javascript
复制
var config = new Configuration
{
   Delimiter = ",",
   //Comment = '#' //this does not work although # is the default
   Comment = Convert.ToChar("#"),
   Quote = '"',
   HasHeaderRecord = false,
   AllowComments = true,
};
票数 0
EN

Stack Overflow用户

发布于 2019-04-06 01:50:56

我认为AllowComments = true是关键部分。即使我设置了Comment = '#',我也能让它工作,但这不是必须的,因为它是默认的。我想知道文化环境是否会起作用。

代码语言:javascript
复制
var config = new Configuration
{
    HasHeaderRecord = false,
    AllowComments = true
};

using (var stream = new StreamReader(filepath))
using (var reader = new CsvReader(stream, config))
{
    while (reader.Read())
    {
        BsonDocument doc = new BsonDocument
        {
            { "A", reader.GetField(0)},
            { "B", reader.GetField(1)},
            { "C", reader.GetField(2).ToLower()},
            { "D", reader.GetField(3)},
            { "E", Convert.ToBoolean(reader.GetField(4))},
            { "F", Convert.ToBoolean(reader.GetField(5))}
        };
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55529326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档