gpt4 book ai didi

C# CSV 解析转义双引号

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:28 26 4
gpt4 key购买 nike

<分区>

我正在尝试解析许多在字段中包含双引号和逗号的 CSV 文件。我无法控制 CSV 的格式,我没有使用“”来转义引号,而是使用\”。文件也非常大,因此阅读和使用正则表达式对我来说不是最佳选择。

我更愿意使用现有的库并记下一个全新的解析器。目前我正在使用 CSVHelper

这是 CSV 数据的示例:

"id","name","notes""40","Continue","如果消息\"Continue\"没有出现重启,并通知你的导师。""41","重新启动","如果 10 秒后没有出现“重新启动”消息,请手动重新启动。”

问题是双引号没有被正确转义,而 , 被当作定界符读取并将注释字段分隔为 2 个单独的字段。

这是我当前无法运行的代码。

DataTable csvData = new DataTable();
string csvFilePath = @"C:\Users\" + csvFileName + ".csv";

try
{
FileInfo file = new FileInfo(csvFilePath);
using (TextReader reader = file.OpenText())
using (CsvReader csv = new CsvReader(reader))
{
csv.Configuration.Delimiter = ",";
csv.Configuration.HasHeaderRecord = true;
csv.Configuration.IgnoreQuotes = false;
csv.Configuration.TrimFields = true;
csv.Configuration.WillThrowOnMissingField = false;
string[] colFields = null;
while(csv.Read())
{
if (colFields == null)
{
colFields = csv.FieldHeaders;
foreach (string column in colFields)
{
DataColumn datacolumn = new DataColumn(column);
datacolumn.AllowDBNull = true;
csvData.Columns.Add(datacolumn);
}
}
string[] fieldData = csv.CurrentRecord;

for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
}
}

是否有一个现有的库可以让您指定如何转义引号,或者我应该只编写自己的解析器?

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