c# - 如何使用 CsvHelper 在 csv 文件末尾跳过脚注
问题描述
我正在尝试以以下形式读取 CSV 文件:
日期 | 价值 |
---|---|
2020 年 12 月 1 日 | 1 |
2020 年 12 月 2 日 | 2 |
文件末尾是一个脚注,全是文本。
如果我使用:
void Main()
{
using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<Foo>();
}
}
public class Foo
{
public DateTime Date { get; set; }
public double Value { get; set; }
}
CsvHelper 抛出“FormatException:字符串未被识别为有效的 DateTime。从索引 0 开始有一个未知单词。”
如果我使用它会起作用:
while (csv.Read()) {
try {
records.Add(csv.GetRecord<Foo>());
}
catch (Exception e) {}
}
但这真的很慢。
我希望添加:
csv.Configuration.ShouldSkipRecord = record => record.Contains("The");
会解决问题,但我得到同样的错误。
任何建议将不胜感激。(对于无法正确格式化表格,我深表歉意。)
解决方案
您可以定义用于表示注释行的字符:
var configuration = new CsvConfiguration { AllowComments = true, Comment = '#' };
using (var csv = new CsvReader(new StreamReader("path\\to\\file.csv"), configuration))
{
var records = csv.GetRecords<Foo>();
}
但这要求您可以操作 csv 文件,或者最后一行的第一个字符是唯一的。
推荐阅读
- node.js - 拖消息发送到电报机器人(同时)
- c++ - 并行插入排序,天真尝试,尝试使用 pthread 失败,线程未并行排序,但使用串行可以正常工作
- python - Pyinstaller Django 频道问题
- c++ - 如何使用自定义 Avfilter 处理 Chromium FFmpegDecodingLoop 中的元数据?
- python - curve_fit 应用于离散数据集问题
- google-cloud-platform - GCP Storage 存储分区的生命周期政策
- python - 带有生成器错误的 TensorFlow 拟合方法。AttributeError:“元组”对象没有属性“形状”
- python - 直接从网站链接下载 CSV 文件
- python - 将多个 pdf 的语言翻译成英文
- php - 如何在 PHP 中复制带有特殊 unicode 字符的文件?