2016-08-03 63 views
-1

我通過將字符串分隔到分隔字符中來將csv類型數據集合解析爲Python元組。非常簡單的東西。在Python中模擬Java字符串拆分方法的行爲

我的問題是任何字段都可能包含空字符串作爲有效數據。這很好,除非最後一個字段是空字符串,在這種情況下,結果元組的長度比它應該少一個。

例如,給出以下字符串,以逗號分隔符:

"2016-08-03,jim,,5146,,ok,,2," 

我希望下面的輸出:

["2016-08-03", "jim", "", "5146", "", "ok", "", "2", ""] 

雖然試圖找到一個簡單的解決這個問題,我發現this answer,它詳細說明了如何在Java的分割實現中保留尾隨的空字符串。但是,我一直無法在Python中找到任何相同的東西。是否有任何其他標準庫方法或其他簡單的技巧會產生這種行爲,還是需要在腳本中添加一些額外的邏輯來完成此操作?我認識到編寫一個產生這種輸出的新方法會非常簡單,但從維護的角度來看,爲了減少代碼的好處,我認爲我會首先檢查是否缺少某些東西甚至更容易)。

+2

您能否顯示一些示例輸入和預期輸出? – CoryKramer

+1

在你引用的答案中'str.split'的行爲在python中的作用是一樣的。你試過'「5 | 6 | 7 || 8 | 9 ||」.split('|')'?它輸出:'['5','6','7','','8','9','','']'。這不是你想要的嗎? – davedwards

+0

@CoryKramer在問題中加入了它。 – user3351605

回答

0

我覺得Python直接給出正確的輸出。你有什麼具體的例子,情況並非如此? :

x = "5|6|7||8|9||" 

x.split("|") 
Out: ['5', '6', '7', '', '8', '9', '', ''] 
+0

你是對的。發現產生數據的程序增加了一個額外的控制字符,當它爲空時有效地掩蓋了最後一個值。 – user3351605

+0

太好了,很高興幫助!!如果您發現問題的解決方案,請接受正確的答案 –