作者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