当我用c#编写CSV时,如何防止添加额外的列?

本文关键字:添加 何防止 编写 CSV | 更新日期: 2023-09-27 18:06:09

我发现并调整了一些c#代码,以从一些CSV文件中删除嵌入的双引号。我不太使用c#,所以我不确定为什么代码要在原始CSV中添加额外的列。我假设它与WriteAllLines方法有关。我打印出CSV标题:

Index([u'State', u'Birthdate', u'Never Contact Type', u'Opt In Marketing',
   u'Pref. Contact Type', u'Individual Source', u'Individual Status',
   u'Individual Sub Type', u'Individual Type', u'Address 1', u'Address 2',
   u'City', u'Company', u'County', u'Email Address', u'First Name',
   u'Last Name', u'Mobile Number', u'Home/Main Number', u'Postal Code',
   u'Salutation', u'Work Number', u'Assigned To', u'Purchase Date',
   u'Entity Id', u'Event Id', u'Sales Sub Type', u'Sales Type',
   u'Sales Source', u'Sales Status', u'Tracking Code',
   u'DMS Deal/RO Number', u'Deal Date', u'Insert Date', u'Update Date',
   u'Make', u'Model', u'Series', u'Stock Num', u'Style', u'VIN Number',
   u'Year', u'Unnamed: 42']

您可以看到,当我运行这个命令时,添加了最后一列:

static void Main(string[] args)
{
    string path = @"some_filepath";
    if (Directory.Exists(path))
    {
        string[] files = Directory.GetFiles(path);

        foreach(string file in files)
        {
            if (file.EndsWith(".csv"))
            {
                var fileContent = File.ReadAllLines(file);
                var fileContentUpdated = fileContent.Select(x => new Regex(@"(?<!^)(?<!',)""(?!',)(?!$)").Replace(x, "'")).ToArray();
                File.WriteAllLines(file, fileContentUpdated);
            }
        }
    }
}

如何防止这种情况发生?

当我用c#编写CSV时,如何防止添加额外的列?

我将把相同的注释作为答案,供您标记。

在任何文本编辑器中打开csv,以确保行没有以逗号结束