删除 CSV 文件中双引号之间的逗号
Posted
技术标签:
【中文标题】删除 CSV 文件中双引号之间的逗号【英文标题】:Remove commas between double quotes in a CSV file 【发布时间】:2012-10-08 15:30:56 【问题描述】:我有一个 CSV 文件,其中包含如下几行:
"bar","foo, bar","18","07/09/2012 02:08:16","payments, recent","payments, all"
有些值包含逗号,我需要去掉这些逗号才能得到这个结果:
"bar","foo bar","18","07/09/2012 02:08:16","payments recent","payments all"
我从这个正则表达式 "^(\".+\"\\,?)+$"
开始,但它对我来说太复杂了。
最终目标是拆分该字符串:
string content = reader.ReadToEnd();
string[] lignes = contenu.Split(new[] Environment.NewLine , StringSplitOptions.None);
for (int i = 1; i < lignes.Length; i++)
// REMOVE COMMAS
string[] values = csv.Split(new[] ',');
// do something
reader.Close();
谢谢。
【问题讨论】:
这可能会有所帮助...保留逗号前加双引号并后接双引号,删除所有其他逗号 这可能会有所帮助:***.com/questions/5202005/… 【参考方案1】:您应该使用知道如何处理这些文件的 CSV 解析器,而不是手动解析您的有效 CSV 文件(引号中允许使用逗号)。
一个流行的库是FileHelpers,在Microsoft.VisualBasic.FileIO
命名空间中有TextFieldParser
。
【讨论】:
谢谢。我将使用 TextFieldParser。【参考方案2】:使用 TextFieldParser 类。它可以处理引号内的逗号。
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx
【讨论】:
【参考方案3】:您可以先对数据进行一些简单的按摩,可能是这样的:
string content = "\"bar\",\"foo, bar\",\"18\",\"07/09/2012 02:08:16\",\"payments, recent\",\"payments, all\"";
content = content.Replace("\",\"", "~");
content = content.Replace(",", ""); // Safe to remove commas now.
content = content.Replace("\"", ""); // Get rid of left over double quotes.
string[] values = content.Split(new[] '~' );
【讨论】:
【参考方案4】:您可以使用此波纹管,请忽略方法名称并将文件导入您的表
private void ImportCSV(string filePath = @"E:\nucc_taxonomy_140.csv", string tableName = "TempTaxonomyCodes")
string tempPath = System.IO.Path.GetDirectoryName(filePath);
string strConn = @"Driver=Microsoft Text Driver (*.txt; *.csv);Dbq=" + tempPath + @"\;Extensions=asc,csv,tab,txt";
OdbcConnection conn = new OdbcConnection(strConn);
OdbcDataAdapter da = new OdbcDataAdapter("Select * from " + System.IO.Path.GetFileName(filePath), conn);
DataTable dt = new DataTable();
da.Fill(dt);
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConfigurationSettings.AppSettings["dbConnectionString"]))
bulkCopy.DestinationTableName = tableName;
bulkCopy.BatchSize = 50;
bulkCopy.WriteToServer(dt);
【讨论】:
以上是关于删除 CSV 文件中双引号之间的逗号的主要内容,如果未能解决你的问题,请参考以下文章
python 我发现Crystal Reports创建的CSV文件具有双引号字段,其中一些字段在引号之间包含逗号。我们不想