【问题标题】:How do I remove corrupted data from .csv file?如何从 .csv 文件中删除损坏的数据?
【发布时间】:2018-08-06 21:39:54
【问题描述】:

所以我有很多数据,但我不确定如何删除损坏的数据。

文件中的列表是这样的:

EMERIE,ESPARZA,166,57,34,蓝色,金发 ADALINE,PARSONS,158,39,£$**),棕色,灰色

£$**) 代表损坏的数据,但我不知道如何删除它,我有超过 10,000 个名称,其中一些是这样的。

【问题讨论】:

  • 如果您希望该字段中有一个数字但您收到了字母,那么您只需尝试转换为数字(int32.TryParse),如果不成功则丢弃该行或插入替换值
  • 看起来 CSV 在格式上没有损坏,您是在谈论数据验证吗?
  • 我需要丢弃“损坏”的数据,但它与 10,000 多条其他数据混合在一起,不确定是否有某种方法可以删除所有损坏的数据。
  • 请为您尝试解决的任务提供更好的描述,最好使用代码示例来演示该问题。目前我看到了适合 CSV 文件格式的数据
  • 如果这是一次性修复,您可以导入 Excel,按包含错误数据的列排序,删除错误行。如果没有,您需要在添加行之前编写代码来验证字段。

标签: c# csv corrupt


【解决方案1】:

假设您想要完全删除损坏的数据行而不是修改它们,您可以执行以下操作:

public void RemoveCorruptData()
    {
        string path = @"C:\CSV.txt";
        string newPath = @"C:\new-CSV.txt";
        List<string> lines = new List<string>();
        Regex corrupt = new Regex("£$**");

        if (File.Exists(path))
        {
            using (StreamReader reader = new StreamReader(path))
            {
                string line;

                while ((line = reader.ReadLine()) != null)
                {
                    if (!corrupt.IsMatch(line))
                    {
                        lines.Add(line);
                    }
                }
            }

            using (StreamWriter writer = new StreamWriter(newpath, false))
            {
                foreach (String line in lines)
                    writer.WriteLine(line);
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多