跳过csv文件中的一些空行,并继续读数据行
我的CVS文件中有4列,前两列有2个空行。我想跳过这些空行。我知道我必须通过文件循环,但我不知道如何执行此过程。跳过csv文件中的一些空行,并继续读数据行
任何建议,将不胜感激。
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;
}
}
正如你可以在这张图片中看到的,我希望在开始的逗号被删除,并且只显示列中包含数据的行。
你可以检查在该行的第一个字符是一个,
,如果是的话你就会知道,第一列是空的:
foreach (var line in fileContents)
{
if(line.Trim().IndexOf(",") == 0)
{
// first column empty, skip
continue;
}
Console.WriteLine(line);
}
我不希望跳过整列,而只是列1和列2中的前两行,如图所示 – user5813072
作为评价和解释,从上一个问题:您可以使用SelectMany
将您的所有色谱柱分为收集中的单独物料,然后过滤掉空的物料:
public static IList<string> ReadFile(string fileName)
{
File.ReadAllLines(fileName)
.SelectMany(line => line.Split(','))
.Where(item => !string.IsNullOrWhiteSpace(item))
.ToList();
}
@ user5813072 - 这是否帮助您解决问题? –
通常,您必须逐字节读取csv文件来验证它,并在某些单元格包含\ n和时才正确读取它。里面的“
但对于简单的情况下,你可以使用这样的事情:
foreach (var line in fileContents)
{
if (line.Split(',').Any(s => s == ""))
continue;
Console.WriteLine(line);
}
,你也有文件阅读功能是一个错误,它总是返回空列表
如果你想。获得无空数据的所有行,那就试试这个:
namespace ConsoleApplication1
{
using System.Linq;
class Program
{
static void Main(string[] args)
{
string[] lines = new string[3];
string data1 = "data1,data2,data3,data4";
string data2 = ",,data3,data4";
string data3 = "data1,data2,data3,";
lines[0] = data1;
lines[1] = data2;
lines[2] = data3;
var result = lines
.Select(line => line.Split(','))
.Where(linePart => linePart.All(part => !string.IsNullOrWhiteSpace(part)))
.ToList();
}
}
}
result
将包含string[]
线,没有一个列表包含任何空的数据部分。
什么是期望的输出?这与您之前的问题完全相同:[如何跳过csv文件中的空行并继续使用数据读取行? c#控制台应用程序](http://stackoverflow.com/questions/38954395/how-to-skip-some-empty-rows-in-csv-file-and-continue-reading-rows-with-data-cs#38954692 ) –
数据,数据,数据,数据,数据,数据,数据 数据,数据,数据 存储号,存储名称,这是我想要的输出 – user5813072
是否希望输出是所有字符串的集合列在一起列在一个列表中? –