如何处理 CSV 文件中的引号
本文关键字:文件 CSV 何处理 处理 | 更新日期: 2023-09-27 18:37:16
要读取CSV文件,我使用以下语句:
var query = from line in rawLines
let data = line.Split(';')
select new
{
col01 = data[0],
col02 = data[1],
col03 = data[2]
};
我要读取的 CSV 文件格式不正确,当被 qutation 标记包围时,条目可以将分隔符;
为数据。
例:
col01;col02;col03
data01;"data02;";data03
我上面的 read 语句在这里不起作用,因为它将第二行解释为四列。
问:有没有一种简单的方法可以正确处理这种格式错误的 CSV?也许使用另一个 LINQ 查询?
只需使用CSV解析器并停止滚动您自己的解析器:
using (var parser = new TextFieldParser("test.csv"))
{
parser.CommentTokens = new string[] { "#" };
parser.SetDelimiters(new string[] { ";" });
parser.HasFieldsEnclosedInQuotes = true;
// Skip over header line.
parser.ReadLine();
while (!parser.EndOfData)
{
string[] fields = parser.ReadFields();
Console.WriteLine("{0} {1} {2}", fields[0], fields[1], fields[2]);
}
}
TextFieldParser
内置于 .NET 中。只需添加对Microsoft.VisualBasic
程序集的引用,您就可以开始了。一个真正的CSV解析器将很乐意处理这种情况。
手动解析 CSV 文件总是会导致这样的问题。我建议您使用第三方工具(如 CsvHelper)来处理解析。
此外,显式分析逗号不是一个好主意,因为可以在计算机环境选项中覆盖分隔符。
让我知道我是否可以进一步帮助,
马 特
不是很优雅,但在使用您的方法后,您可以检查任何 colxx 是否包含未完成的引号(单个),您可以将其与下一个 colxx 连接。