CSV檔案的轉義處理

2021-06-02 14:48:34 字數 893 閱讀 4207

csv檔案是一種適合程式格式化輸出資料的檔案格式。它使用英文逗號作為列分隔符,檔案可以直接用excel開啟。csv的規則簡單,便於程式輸出;excel對csv的相容性使得我們可以非常輕鬆的使用excel提供的所有強大功能。

唯一需要注意的地方就是csv是使用英文逗號作為列分隔符的,所以當你輸出的文字中含有英文逗號時就會被csv認為是列分隔符,從而使得檔案的現實格式與預想中的不同。因此,我們需要對內容進行轉義。

網上可以得到的關於csv的轉義大致可以總結為:

1.      如果乙個單元內含有逗號,那麼用半形雙引號將內容包含,其中的逗號將不被識別為列分隔符;

2.      如果原內容中出現了半形雙引號,便是用兩個半形雙引號轉義。           

但是在實際操作中,就會發現如果某個單元內出現多個逗號,雙引號,我們的規則便不對了。例如:

test,ma, "ma, ""go"", ""go"",""go"""

我們希望的輸出格式是三列,但是excel會顯示為六列。我們的轉義字元失效了。

test

ma"ma

""go""

""go""

""go"""

看乙個更簡單的例子:

test,ma, "woshima, sldkl",

我們希望將其顯示為三列,但是結果卻是四列:

test

ma"woshima

sldkl"

由此可見,網上流傳的轉移規則並不完全。其根本原因在於,csv只是乙個技術規範,不同的程式對其有不同的支援;而且csv本身的規範也是相當繁瑣( )。如果希望用程式去實現這樣的規範,那麼csv的簡單性的優勢將不復存在。

好了,說到這裡,我們應該怎麼做呢? 我個人認為,最好的辦法就是規定乙個特殊的字串作為英文逗號的轉義字元。

這樣就一了百了。

如何轉義CSV檔案中的逗號

csv全稱是 comma separated values 或者 character separated values。儘管第一種說法更常見,但我覺得還是第二種說法更確切一些,因為你可以使用其它字元做分隔符。使用逗號做分隔符的csv檔案有乙個好處 你可以直接用excel開啟。如果使用其它分隔符,比如...

csv檔案處理

今天先簡單的使用一些csv檔案處理的一些常用方法,後面使用到numpy pandas等模組時再補充。csv檔案格式的通用標準並不存在,可以參看rfc 4180 逗號分隔值 comma separated values,csv,有時也成為了字元分隔,因為分隔字元也可以不是逗號 其檔案以純文字形式儲存 ...

csv檔案處理

1 讀入檔案 讀入csv檔案的方式有兩種,一種是pd.dataframe.from csv 另一種是pd.read csv 兩種讀入csv檔案的方式本身沒有實質性的區別,二者都基於相同的函式功能實現,但是有一些引數的預設值不同。推薦使用的是pd.read csv,pd.dataframe.from ...