C# 使用c从csv文件中删除空列#
我有包含数据的csv文件C# 使用c从csv文件中删除空列#,c#,csv,C#,Csv,我有包含数据的csv文件 ABC,BCA,AAA CBA,BSH,updated XYZ ,Marketing,YYY 我尝试了下面的代码,但得到的结果如下 结果:- ABC,BCA,AAA CBA,BSH,updated XYZ ,Marketing,YYY 代码:- using System; using System.Collections.Generic; using System.IO; using
ABC,BCA,AAA
CBA,BSH,updated
XYZ
,Marketing,YYY
我尝试了下面的代码,但得到的结果如下
结果:-
ABC,BCA,AAA
CBA,BSH,updated
XYZ
,Marketing,YYY
代码:-
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace RemoveEmptyLines
{
class Program
{
static void Main(string[] args)
{
string path = @"C:\Users\Test\Downloads\222.csv";
Test test = new Test();
test.RemoveBlankRowsFromCVSFile(path);
}
}}
public class Test
{
public void RemoveBlankRowsFromCVSFile(string filepath)
{
if (filepath == null || filepath.Length == 0)
{
throw new ArgumentNullException("filepath");
}
if (!File.Exists(filepath))
{
throw new FileNotFoundException("Could not find CVS file.", filepath);
}
var tempFileName = Path.GetTempFileName();
try
{
using (var streamReader = new StreamReader(filepath))
using (var streamWriter = new StreamWriter(tempFileName))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
if (!string.IsNullOrWhiteSpace(line))
{
streamWriter.WriteLine(line);
}
}
}
File.Copy(tempFileName, filepath, true);
}
finally
{
File.Delete(tempFileName);
}
}}
但我希望输出像
ABC,BCA,AAA
CBA,BSH,updated
XYZ,Marketing,YYY
请帮我做这个,提前谢谢
有什么办法可以让我得到想要的结果。- 用新数据更新。但所有的建议都是一样的
ABC,BCA,AAA
CBA,BSH,updated
XYZ
,Marketing,YYY
预期结果:
ABC,BCA,AAA
CBA,BSH,updated
XYZ,Marketing,YYY
您对该请求的要求是:
- 删除空行
- 删除空白(包括未转换的换行符)
- 将多行数据合并为一行
- 这会导致大量其他问题
A,,
,B,
C,D,E
或在此:
A,B
,,C,D
A,B,C
,,D,
E,F,G
A,B,
C,D,E
A,B
C,D,E
或在此:
A,B
,,C,D
A,B,C
,,D,
E,F,G
A,B,
C,D,E
A,B
C,D,E
或在此:
A,B
,,C,D
A,B,C
,,D,
E,F,G
A,B,
C,D,E
A,B
C,D,E
或在此:
A,B
,,C,D
A,B,C
,,D,
E,F,G
A,B,
C,D,E
A,B
C,D,E
还是在这里
A,B,C
D
E,
F G H
, I
- 这个问题有很多含糊不清的地方。请 重申
- 如果这是一个真实的问题,那么就像乔·菲利普斯所说的 修复数据生成器
- 以不同的方式看待问题并识别 如何才能最好地识别新行线和其他畸形并逃脱 正确地使用它们并编写正确的CSV解析器,而不是尝试 在一行中获取所有内容
- 这将有助于您:
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
namespace CSVFixer
{
public class CSV
{
public void fixCSV(string filePath)
{
string content = File.ReadAllText(filePath, Encoding.UTF8);
string reEx = "\\r\\n\\s+";
content = Regex.Replace(content, reEx,"");
File.WriteAllText(filePath, content, Encoding.UTF8);
}
}
}
你只需要通过prameter
string filePath = @"C:\Users\Ivan\Documents\csv.txt";
可能您需要修改名为reEx的常规表达式,如果您的文件也是.csv,则该表达式会很好地工作。您称为csv的文件不是有效的csv,所以我们不要这样称呼它。问题是csv文件一开始就不正确。您应该首先修复创建CSV文件的任何问题。它是一个有效的CSV(就其本身而言),但由于正在输入换行符,因此它对您的目的无效。修复原始CSV,而不是症状。如果你不能,那么你必须检查每一行,以确保它有3个非空值,如果没有,从下一行读取它们。是的,是正确的,这不是一个有效的csv文件,我已经更正了csvfile@VenkateshVenky我想你不明白。还是不对。换行是错误的原因。您的问题与csv文件无关,它与格式有关text@VenkateshVenky解决方案是首先输出一个有效的CSV文件。如果试图“修复”一个文件并将其转换为有效的CSV文件,您将遇到很多问题