2012-07-12 55 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

相關問題