作者itucson (愛吐桑)
看板Ruby
標題[問題] csv每欄加上引號
時間Tue May 6 16:20:44 2008
有一筆資料是長這樣
cat input
95,1,997,瑞文氏圖形推理測驗,28,台灣區,XX,54,XXXXXXXXXXXXXXXXXXX,2008-1-1,1
我想以用一行指令就把每個欄位都加上雙引號,但是行首跟行尾要怎麼表示?
ruby -pe 'gsub(/,/, "\",\"") ' < input > output
cat output
95","1","997","瑞文氏圖形推理測驗","28","台灣區","XX","54","XXXXXXXXXXXXXXXXXXX","2008-1-1","1
感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.17.173.193
1F:推 godfat:這樣可以嗎?gsub(/([^,]+)/, '"\1"') 05/06 16:30
2F:→ itucson:我大概知道為什麼了,因為utf8中文,輸出變亂碼 05/06 16:46
3F:→ godfat:我試是正常的,也可以 /([^,]+)/u 試試 05/06 17:11
4F:→ adrianshum:如果有一格是 empty 就不行了吧: 95,1,,,28,台灣 .... 05/06 17:32
5F:→ godfat:還是乾脆照原本的方式,前後補 " 就好了? 05/06 17:49
6F:→ itucson:我的真的不行 >< 不曉得為什麼,ruby -pe 'gsub...' 這樣? 05/06 20:18
7F:→ itucson:那就不要再傷腦筋這個好了,但還是很感謝版大,真是熱心 05/06 20:20
8F:→ ebs:試試 ruby -pe "gsub(/([^,\n]+)/, "\'\"\\1\"\'")" 05/06 21:30