CsvReader 不应用配置
CsvReader not applying configuration
我正在尝试解析一个 CSV 文件,其中一些行用“#”字符注释掉了。
我正在使用 CsvHelper 配置 class 来设置 CsvReader 的配置。但是,它似乎没有注册并且仍然阅读我的评论行作为输入。
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 文件中的数据示例:
#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
只有以下有效。或者,如果它是默认的“#”,则您可以不明确说明注释字符。
var config = new Configuration
{
Delimiter = ",",
//Comment = '#' //this does not work although # is the default
Comment = Convert.ToChar("#"),
Quote = '"',
HasHeaderRecord = false,
AllowComments = true,
};
我认为 AllowComments = true
是关键部分。即使我设置 Comment = '#'
,我也能够让它工作,但这不是必需的,因为它是默认值。我想知道文化背景是否可以发挥作用。
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))}
};
}
}
我正在尝试解析一个 CSV 文件,其中一些行用“#”字符注释掉了。
我正在使用 CsvHelper 配置 class 来设置 CsvReader 的配置。但是,它似乎没有注册并且仍然阅读我的评论行作为输入。
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 文件中的数据示例:
#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
只有以下有效。或者,如果它是默认的“#”,则您可以不明确说明注释字符。
var config = new Configuration
{
Delimiter = ",",
//Comment = '#' //this does not work although # is the default
Comment = Convert.ToChar("#"),
Quote = '"',
HasHeaderRecord = false,
AllowComments = true,
};
我认为 AllowComments = true
是关键部分。即使我设置 Comment = '#'
,我也能够让它工作,但这不是必需的,因为它是默认值。我想知道文化背景是否可以发挥作用。
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))}
};
}
}