gpt4 book ai didi

c# - 将文本文件解析为 CSV C#

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:52 25 4
gpt4 key购买 nike

我是 C# 开发新手。我需要解析一个巨大的文本文件,每行包含几行数据。输出将是一个 CSV 文件。

文件的格式遵循以下模式:

Acronym: TIFFE Name of proposal: Thermal Systems Integration for Fuel EconomyContract number: 233826Instrument: CP – FP#Acronym: STREAMLINEName of proposal: Strategic Research For Innovative Marine Propulsion ConceptsContract number: 233896Instrument: CP – FP

#代表新记录。现在这个文本文件中有数百条“记录”。我希望能够将所有内容解析为 CSV,其中包含首字母缩略词、提案名称等列,以及包含每条记录的实际数据的行。

是否有尝试此操作的最佳方法?

我猜在将数据解析为 CSV 之前,我必须先将数据解析为中介(如 DataTable)。

最佳答案

这个简单的 LINQ 语句将您的输入文件解析为一系列记录,并将每条记录以 CSV 格式写入输出文件(假设每条记录中字段的数量和顺序相同):

File.WriteAllLines("output.csv", File
.ReadLines("input.txt")
.GroupDelimited(line => line == "#")
.Select(g => string.Join(",", g
.Select(line => string.Join(line
.Substring(line.IndexOf(": ") + 1)
.Trim()
.Replace("\"", "\"\""), "\"", "\"")))));

输出:

"TIFFE","Thermal Systems Integration for Fuel Economy","233826","CP – FP""STREAMLINE","Strategic Research For Innovative Marine Propulsion Concepts","233896","CP – FP"

Helper method:

static IEnumerable<IEnumerable<T>> GroupDelimited<T>(
this IEnumerable<T> source, Func<T, bool> delimiter)
{
var g = new List<T>();
foreach (var x in source)
{
if (delimiter(x))
{
yield return g;
g = new List<T>();
}
else
{
g.Add(x);
}
}
yield return g;
}

关于c# - 将文本文件解析为 CSV C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com