看板 Python 關於我們 聯絡資訊
大家好, csv某欄的資料裡面包含逗號, 當用python抓的時候就會產生問題, 想請教有什麼方式可以抓某欄格式不整齊的csv資料。謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.157.17 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1522310427.A.F6E.html
kenduest: 你的 cvs 內容內,有逗點的資料有用雙引號包起來嗎? 03/29 16:12
lh1122: 沒有用雙引號包,資料來自老師,但筆數過多也無法人工加 03/29 16:28
lh1122: 雙引號 03/29 16:28
ddavid: 如果後欄是數字的話就還有機會,你可以在這一欄特別處理讀 03/29 16:31
ddavid: 到數字為止(前提是這欄裡面沒數字) 03/29 16:31
ddavid: 或者這一欄如果「一定有剛好一個逗號」的話,你可以當成兩 03/29 16:32
ddavid: 欄來讀,再合併並補上中間的逗號 03/29 16:32
ddavid: 若沒以上這些比較好處理的情況,要程式自動處理就不容易了 03/29 16:33
lh1122: 該欄像人的一般敘述,所以有多個逗號,部分可能也有數字, 03/29 16:43
lh1122: 此外下一欄還是文字 03/29 16:43
Jeffrey11061: 欄位內容有沒有什麼規則呢? 03/29 16:43
lh1122: 感覺沒有,屬於人的描述,有逗號、數字、文字 03/29 16:47
Kazimir: 如果只有這一欄是這種情況 那你就把切開來會比正常多 03/29 16:56
Kazimir: 幾欄的那些挑出來 特別處理以後再放回去 03/29 16:57
Jeffrey11061: 目前想到可以寫個file I/O的script 將逗點數量不正 03/29 17:03
Jeffrey11061: 確的lines濾出來另外處理 03/29 17:03
lh1122: 想問K大要怎麼切呢,要依據什麼切? 03/29 17:18
lh1122: 也想問J大要依據什麼過濾呢? 03/29 17:19
vfgce: 不考慮放個資料圖給大家看一下你的資料長什麼樣? 03/29 17:19
Jeffrey11061: line by line讀取,count逗號數量,正確的話將該行 03/29 17:27
Jeffrey11061: 寫到file A,否則寫到file B 03/29 17:27
lh1122: https://i.imgur.com/5JYKwlj.jpg 03/29 17:27
lh1122: 這是模擬資料,概念是地址這欄有很多逗號,導致格式不整 03/29 17:29
lh1122: 齊了,但真實資料中的下一欄是文字,非影像中的數字 03/29 17:29
Jeffrey11061: 用純文字方式開啟可能比較好讓大家觀察 03/29 17:30
vfgce: 你的逗號看來是全形,應該不影響啊..... 03/29 17:36
lh1122: https://i.imgur.com/hSivFI8.jpg 03/29 17:38
flarehunter: 用regex找電話號碼的欄位,前面的都當成地址行不行 03/29 18:10
iitze: 反過來抓,後面三個欄位保留,前面合併 03/29 18:16
vfgce: 假設你的資料都是高雄,line 為讀入的一行 03/29 18:32
vfgce: a,b=line.split('07-') 03/29 18:32
vfgce: a就是地址部分,b自行把'07-'補上,再做一次split 03/29 18:33
hsnusonic: 如果資料是你貼的這樣,從後面切回來就好啦,rsplit(‘ 03/29 21:06
hsnusonic: ,’,5) 03/29 21:06
lh1122: 感謝各位前輩的慷慨幫助,等我拿到真實資料就來試試,再 03/29 23:19
lh1122: 次感謝 03/29 23:19
junkuo: 這圖裏面是不是有個資?要注意喔,會被告的 03/30 10:12
Neisseria: https://github.com/Clever/csvlint 可參考 03/30 11:08
lh1122: 謝謝J大提醒,這是開放式資料下載來的 03/30 11:32
lh1122: 也謝謝N大我來研究看看 03/30 11:32