這裏有什麼是CSV的不尋常的方言。
雖然爲CSV沒有正式的標準,有廣泛的兩種方法來報價:
- 行情並不特殊。即:
7" single, 12" album
是兩項:7" single
和12" album
。在這種方言中,含有,
的物品存在問題。
- 行情很特別。即:
"you, me","me you"
是兩項:you, me
和me, you
。在這種方言中,您可以在條目周圍添加引號,以便在條目中有,
。但是,它會使包含"
的項目出現問題,就像您發現的那樣。
典型的回答在第二種方法的"
問題,是逃生報價。所以項目7" single
將在CSV中顯示爲"7\" single"
。這當然意味着\
成爲一個問題,但這很容易以同樣的方式解決。 AC\DC 7" single
在CSV中顯示爲"AC\\DC 7\" single"
。
如果您可以採用這些傳統方法之一,那就這樣做。然後,您可以使用現有的CSV庫,也可以推出自己的CSV庫。儘管正則表達式可以使用這些格式,但我的觀點是,它不是編寫代碼以使用CSV的最清晰的方式:我發現更清晰的狀態機(例如switch (state)
語句)很好,很清晰。
如果你不能改變你的輸入格式,你必須解決的難題是,當你遇到一個"
時,它是一個元字符(圍繞一個項目的一對引號的一部分)還是真實的字符項目的一部分?
作爲格式的所有者,由您決定規則是什麼。也許"
只應該被認爲是一個元字符,如果它旁邊,
。
"A Town Called Malice", The Jam, 7", £6.99
所以,你必須拿出自己的規則,即工作您的域,並明確寫代碼來處理這種情況:但是,即使你讓報價,不帶引號的物品的混合物引起的問題。一種方法是將輸入預處理爲規範化的CSV,以便它再次適用於傳統的CSV分析器。
你能提供一些數據嗎? – Rahul
@Sajirupee:可能因爲英寸分隔字符串。身份證使用這些'''英寸?並且Id想知道該程序是否可以編譯,並且請顯示您獲得的輸出。 – user7185318
您沒有向我們展示第一個輸入字符串的預期輸出。 – revo