2012-07-12 59 views
-2

假设你有一个这样的字符串:如何在CSV文件的字符串中包含“,”?

example_string = " 
    "Hi, My name is "Fohsap", and I'm dumb" 
    "Hi, Fohsap," she interrupted. 
" 

而你试图让它成为一个CSV文件是这样的:

"example_recipient","example_string","example_recipient2","example_string2",..."example_recipientN","example_stringN" 
+1

为什么不把它输入到excel(或你喜欢的等价物)中,然后保存为CSV并查看出了什么? – John3136 2012-07-12 23:14:49

+0

@ John3136很酷的名字。 Excel不易访问。如果你没有,请用另一个投票反对。谢谢。 :) – 2012-07-12 23:49:23

+0

我没有投票赞成我至少可以告诉你问的问题是什么。只是评论“看大男孩如何做”,但这不是一个真正的答案。 – John3136 2012-07-12 23:54:56

回答

1

逗号不应该是一个问题(因为你在每个值周围使用双引号),但是您需要转义双引号。这里有一些指导原则:CSV reader,但它实际上取决于你用来读取文件的内容。你还需要关心你的换行符(对于Excel,只要你使用引号,这不是问题,对于Unix,你需要执行正常的Unix转义操作)\ n)

+0

不太关心回报,因为他们似乎与我读的内容一起工作。如果他们不工作,我可以做一个批量替换操作。不过要注意详细说明一下? – 2012-07-12 23:51:24

+0

这实际上取决于你使用什么技术来使用文件。我提供的链接非常完整。 – 2012-07-12 23:56:33

+1

从您提到的指导方针网站直接引用:“在Excel中已转义的CSV文件中,在包含双引号的字段中,双引号必须用双引号替换单引号才能转义。” – 2012-07-13 00:01:05

1

这将根据实现的不同而有所不同CSV ,但一种常见的方式是报价字段包含分隔符(,)字符。请注意,如果需要,报价")字符会被双重转义。 (见CSV: Basic Rules and Examples。)

因此,可以想象3场,ab,c"hello,world"这可以写成:

a,"b,c","""hello,world""" 

推理的各个字段:

a     <- no escape/quote needed 
"b,c"    <- quoted so [,] is not treated as separator 
"""hello,world""" <- quoted for [,] and the ["]s are double-escaped 

我会建议编写自己的CSV(或者更糟的是,手动建立字符串!),而是使用现有的库。它已经有了缺陷和边缘情况,比如如何处理嵌入换行符。

快乐编码!

+0

手动输入不能总是避免,所以我认为最好学习角落案例。不过,你提出了一个很好的观点。如有可能,我将使用一个程序来生成CSV文件。所以,谢谢你的例子。基本上,你是说有时用双引号来避免双引号,对吧? – 2012-07-12 23:56:05

+0

此外,您的链接是一个伟大的阅读。它给了我一些关于不同种类的CSV文件的信息。 – 2012-07-13 00:04:54

+0

@ Wolfpack'08这不是关于手动输入 - 而是关于如何在CSV文件中记录和转换数据。很高兴的链接是有用的:) – 2012-07-13 00:16:36

相关问题