如何跳过csv文件中的一些空行并继续读取数据行? c#控制台应用程序 [英] How to skip some empty rows in csv file and continue reading rows with data? c# console application

查看:264
本文介绍了如何跳过csv文件中的一些空行并继续读取数据行? c#控制台应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的CVS文件中有5列,前两列有3个空行。我想跳过这些空行。我知道我必须循环通过文件,但我不知道如何做这个过程。

I do have have 5 column within my CVS file, the first two columns have 3 empty rows. I would like to skip these empty rows. I know that I have to loop through the file however I do not know how to do this process.

任何建议都会感激。

public class Program
{
    static void Main(string[] args)
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Santander .csv");
        var fileContents = ReadFile(filePath);
        foreach (var line in fileContents)
        {
            Console.WriteLine(line);
        }

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

    public static IList<string> ReadFile(string fileName)
    {
        var results = new List<string>();
        var target = File.ReadAllLines(fileName).ToList();
        return results;
    }
}


推荐答案

a 其中子句只保留不 NullOrWhiteSpace (空,空白或只有空格)的行:

Use a Where clause to keep only rows that are not NullOrWhiteSpace (null, empty or only white spaces):

public static IList<string> ReadFile(string fileName)
{
    return File.ReadAllLines(fileName)
               .Where(line => !string.IsNullOrWhiteSpace(line))
               .ToList();
}






之后是:对于每行使用拆分获取不同的列,然后检查前2个不为空:


After better understanding what you are after for then: For each line use Split to get the different columns and then check that the first 2 are not empty:

public static IList<string> ReadFile(string fileName)
{
    return (from line in File.ReadAllLines(fileName)
            where !string.IsNullOrWhiteSpace(line)
            let columns = line.Split(',')
            where columns.Length >= 2 && 
                !string.IsNullOrWhiteSpace(columns[0]) &&
                !string.IsNullOrWhiteSpace(columns[1])
            select line).ToList();
}

更改为语法查询,因为在我看来,我们开始需要 let

你想要的是从文件中获取所有的列值,而没有空的那个:

If what you want is get all the column values from the file without the empty ones then:

public static IList<string> ReadFile(string fileName)
{
    File.ReadAllLines(fileName)
        .SelectMany(line => line.Split(','))
        .Where(item => !string.IsNullOrWhiteSpace(item))
        .ToList();
}

这篇关于如何跳过csv文件中的一些空行并继续读取数据行? c#控制台应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆