[請益] Perl 讀取csv檔案

看板Perl作者 (醉落~最弱)時間10年前 (2014/09/28 10:44), 10年前編輯推噓1(1013)
留言14則, 4人參與, 最新討論串1/1
各位版大/高手您好 小弟最近在嘗試使用perl 讀取csv檔案 (由伺服器抓下來的) 把CSV打開後看到的東西是EX. ABC DEFG HIJK 但是用perl讀出後自元間會多出間隔 ex.['A B C D E F G H I J K'] 若是用length去算長度, string 變成原來的兩倍長 請問是為什麼呢? 小弟應用上希望讀出的結果與在csv上看到的一致 這樣才能運用 感謝! 程式碼: pen FILE1, "<data1.txt" or die " Cannot open data"; $x=0; while ($line= readline(FILE1)){ @data[$x]=$line; $x=$x+1; print @data[$x]; #print length($line),"\n"; } close FILE1; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.242.247 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1411872261.A.C3F.html

09/28 10:45, , 1F
空格的長度有會一起算進去阿
09/28 10:45, 1F

09/28 10:46, , 2F
您好, 但是在csv裡面儲存格中沒有那些空格說Or2
09/28 10:46, 2F
※ 編輯: josefy (220.135.242.247), 09/28/2014 10:47:53

09/28 11:14, , 3F
個人是有懷疑過編碼問題, big5似乎一個四元要兩個byte
09/28 11:14, 3F

09/28 11:14, , 4F
個人試過把data copy至筆記本後 在讀出就沒有問題
09/28 11:14, 4F

09/28 11:15, , 5F
但是為了工作效率, 希望可以不要手動複製到筆記本上
09/28 11:15, 5F

09/28 11:31, , 6F
如果是編碼問題的話,可以找一下 encoding 這個模組
09/28 11:31, 6F

09/28 11:33, , 7F
把你的第四行以UTF-16編碼存成純文字檔,再用us-ascii編碼
09/28 11:33, 7F

09/28 11:33, , 8F
打開會見到類似的現象
09/28 11:33, 8F

09/28 11:36, , 9F
另外,a-zA-Z在big5編碼內仍然是一個符號佔1byte (8 octets)
09/28 11:36, 9F

09/28 12:29, , 10F
請問F大, 這是big5造成的問題嗎? 要怎麼解決呢?
09/28 12:29, 10F

09/28 13:38, , 11F
use Encode; $line=Encode::decode('big5', $line);
09/28 13:38, 11F

09/28 13:38, , 12F
不過你 @data[$x] 應該是要寫成 $data[$x] 吧?
09/28 13:38, 12F

09/28 13:39, , 13F
然後..為什麼讀進$data[$x]以後,$x加1,印$data[$x+1] ?
09/28 13:39, 13F

09/28 23:07, , 14F
感謝Cindy大, 小弟試試看!
09/28 23:07, 14F
文章代碼(AID): #1K9tO5m_ (Perl)
文章代碼(AID): #1K9tO5m_ (Perl)