在CSV文件中包含逗号

4
我目前正在处理导入CSV文件中的数据。 我在决定一个需要添加到逗号分隔字段的变量时遇到了困难。以下是数据 -
 "acNumber","Date","Code"
  12332,123  09/12/2012 1231

这是所期望的格式。它实际上显示的方式如下

  "acNumber","Date","Code"
  12332        123   09/12/2012 ...

实际发送的数据是一个字符串,格式如下 -
"12332,13321","08/08/2016","1234"

我已尝试以下可能的解决方案 -
1)像这里建议的那样用引号括起我的代码
""12332,13321""

我已经添加了两个双引号,因为该值已经被引号包含。我也尝试过使用单个双引号。
2) 在最终输出字符串中,在逗号前使用转义符("\")。
 "12332\,13321"

我已经在谷歌上搜索过了,但仍然没有找到任何解决方案。请帮忙。


Naren,你是在电子表格中打开这个CSV文件吗?如果是的话,你的数据周围的引号将会消失。你能否在文本处理器(如notepad++)中打开CSV文件并查看是否存在引号? - Ramachandran.A.G
"12332,13321","08/08/2016","1234"是正确的格式 - https://en.wikipedia.org/wiki/Comma-separated_values - IVO GELOV
在编程中,将文本用引号括起来即可。当然,在字符串字面量中,引号必须进行转义。你可以尝试使用制表符\t作为分隔符。也许可以展示一下代码。 - Joop Eggen
@RamachandranGA 我在notepad++中打开它,它上面有引号。 - Narendra Pandey
@IVOGELOV 是的,那也是我想要的格式。 - Narendra Pandey
4个回答

3

如果您想要在CSV文件中转义逗号分隔符,您需要将内容放在双引号之间,例如,如果您有12332,123,则应该在CSV文件中输入"12332,123"

如果您想要转义双引号内的内容,您需要在两个新的双引号之间放置该内容,这样总共就会有三个双引号。例如,如果您有"12332,13321",则应该在CSV文件中输入"""12332,13321"""


嗨,尼古拉斯,当我使用"""12332,13321"""作为我的输入时,我会在两个不同的单元格中得到="""12332和13321"""。 - Narendra Pandey
你从哪里获取它?在Excel中吗? - Nicolas Filotto
我已经成功地导入了它(一个单元格中的“12332,13321”)到Excel和Libre Office。您使用哪个软件来导入CSV文件? - Nicolas Filotto
谢谢,我已经解决了。我忽略了“=”。:( - Narendra Pandey

1

刚试了一下

a) 用 """ 包含似乎可以解决问题。你可以在代码中附加 """,然后就可以使用了。 输入图像描述

编辑:我的错,刚才看到 Nicolos 发布了相同的答案。他是正确的。


使用 """12332""","""13321""" 后,我得到了两个不同单元格中的数据,分别为 "12332" 和 "13321"。 - Narendra Pandey
谢谢,我已经解决了它。 - Narendra Pandey

0

我已经解决了。

我太愚蠢了,忽略了字段前面的“=”符号。我试图在不考虑它的情况下找到解决方案。后来我将其视为我的值的一部分,并知道了为什么要使用它。在这里找到了解决方案。我重新格式化了值如下 -

"=""432234,23423"""

0

可能这不是你要找的答案。然而,我建议使用一个库来编写csv,例如apache commons中的一个。它有默认的CSVFormat,例如Excel的一个。这个库非常可配置,所以相对容易定制。

一般来说,我建议使用第三方库来完成常见任务。

以下是如何使用apache commons csv库的代码片段:

    List<String> record = Arrays.asList("acNumber","Date","Code");
    StringBuilder builder = new StringBuilder();
    try (CSVPrinter csvPrinter = new CSVPrinter(builder, CSVFormat.EXCEL)) {
        csvPrinter.printRecord(record);
    }

谢谢,我已经解决了它。我忽略了'='。:( - Narendra Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接