c# - CsvHelper 解析未分隔表中的文本
问题描述
这是我的数据集,它来自我无法控制输出的命令:
BOOLEANCOLUMN NAME CLUSTER AUTHINFO
someName someCluster SomeMoreData
* name2 Data2 Data2
我希望能够将其转换为一个类来处理数据,我正在尝试使用 CSVHelper 但是它们的标题没有分隔,它们被隔开以格式化数据以供人类阅读。我目前有一个映射类:
public ContextMap()
{
Map(m => m.Name).Name("NAME");
Map(m => m.AuthInfo).Name("AUTHINFO");
Map(m => m.Cluster).Name("CLUSTER");
Map(m => m.BooleanColumn).Name("BOOLEANCOLUMN");
}
但我得到了例外:
CsvHelper.MissingFieldException:“名称为“NAME”的字段不存在。您可以通过将 MissingFieldFound 设置为 null 来忽略缺失的字段。
问题:如何将这些数据解析为一个类?
解决方案
我查看了文档,似乎开发人员已经计划实现一个固定宽度的解析器,但还没有实现。
为了解决这个问题,我创建了以下方法来将数据转换为代码中的分隔符:
public static string ConvertFixedWidthToCsv(string data)
{
var rows = data.Split(
new[] { "\r\n", "\r", "\n" },
StringSplitOptions.None
);
var returnRows = new List<string>();
foreach (var row in rows)
{
if (string.IsNullOrWhiteSpace(row))
{
continue;
}
var parsed = Regex.Replace(row, @"\s+", ",");
returnRows.Add(parsed);
}
return String.Join("\r\n", returnRows);
}
推荐阅读
- boolean-algebra - 将以下表达式简化为 A'D' + A'B
- nginx - 在 nginx conf 中使用变量
- c++ - Windows RPC 调用中的“存根收到错误数据”异常
- c# - c#在没有返回的情况下访问静态方法内部的信息
- python - 如何在 ../src/x86/ffi64.c:158 处修复 Python 函数“classify_argument”中的段错误
- metpy - 绘制 MetPy Q 向量
- python - 如何通过关键事件运行代码但不停止其他正在运行的功能
- php - 基于用户的 Dingo Api 节流
- python - 有没有办法从代码中查看 Python API 文档?
- reactjs - 在 ReactJs 中添加条带元素多个可发布键