如何在csv列中使用逗号[重复]

Posted

技术标签:

【中文标题】如何在csv列中使用逗号[重复]【英文标题】:how to use comma in csv columns [duplicate] 【发布时间】:2011-08-10 01:37:19 【问题描述】:

可能重复:Dealing with commas in a CSV file

我们正在为我们的一个项目将批量数据导出到 csv 文件中。所以在这种情况下,我们必须导出像 a,b,c,d 这样的值,它们都必须保留在一列中。但是逗号会将它们分隔到不同的列中。

如果我们导出一些在 textarea 或编辑器中输入的包含 \r\n 等字符的值,将在 csv 中导出为单独的行。我该如何解决这个问题??

【问题讨论】:

***.com/questions/769621/… 【参考方案1】:
       // CSV rules: http://en.wikipedia.org/wiki/Comma-separated_values#Basic_rules
        // From the rules:
        // 1. if the data has quote, escape the quote in the data
        // 2. if the data contains the delimiter (in our case ','), double-quote it
        // 3. if the data contains the new-line, double-quote it.

        if (data.Contains("\""))
        
            data = data.Replace("\"", "\"\"");
            data = String.Format("\"0\"", data);
        
        else if (data.Contains(",") || data.Contains(System.Environment.NewLine))
        
            data = String.Format("\"0\"", data);
        

数据可以是 db 中的单个项目或类型的属性值。

【讨论】:

非常有帮助,它解决了我的问题,但是在 excel 中打开会显示一条消息,它是不同格式的 我认为这个项目应该是:if (data.Contains("\"")) data = String.Format("\"0\"", data.Replace("\"", "\"\"")); ,因为转义的引号必须在一个本身在引号内的字符串中。 使用excel 2013,需要用notepad++打开文件,在第一行添加sep=, 您可能需要考虑将逗号检查和换行符检查结合起来,这样当两个条件都存在时,您就不会在字符串周围出现两组引号。 这确实是一个很好的答案,但使用 .IndexOf() 方法而不是 Contains 方法要好得多 - 这样您将获得 10 倍的性能。【参考方案2】:

处理此问题的最常见方法是使用"" around 字段,但取决于谁在使用您的文件,可以通过多种方式进行处理。您可以分隔逗号,您可以将逗号更改为特殊值或使用不同的分隔符,但大多数命令

【讨论】:

以上是关于如何在csv列中使用逗号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python pandas删除csv中列中的精确重复项

熊猫在列中使用额外的逗号读取 csv

如何将表数据连接到一个逗号分隔的列中[重复]

CSV 列中的逗号值 - 无效代码

用逗号分隔 HashMap 输出到 .csv

JMeter 使用同一列中带有逗号的值写入 CSV