作者josefy (醉落~最弱)
看板Perl
標題[請益] Perl 讀取csv檔案
時間Sun Sep 28 10:44:19 2014
各位版大/高手您好
小弟最近在嘗試使用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://webptt.com/m.aspx?n=bbs/Perl/M.1411872261.A.C3F.html
1F:→ xatier: 空格的長度有會一起算進去阿 09/28 10:45
2F:→ josefy: 您好, 但是在csv裡面儲存格中沒有那些空格說Or2 09/28 10:46
※ 編輯: josefy (220.135.242.247), 09/28/2014 10:47:53
3F:→ josefy: 個人是有懷疑過編碼問題, big5似乎一個四元要兩個byte 09/28 11:14
4F:→ josefy: 個人試過把data copy至筆記本後 在讀出就沒有問題 09/28 11:14
5F:→ josefy: 但是為了工作效率, 希望可以不要手動複製到筆記本上 09/28 11:15
6F:→ xatier: 如果是編碼問題的話,可以找一下 encoding 這個模組 09/28 11:31
7F:→ flu: 把你的第四行以UTF-16編碼存成純文字檔,再用us-ascii編碼 09/28 11:33
8F:→ flu: 打開會見到類似的現象 09/28 11:33
9F:→ flu: 另外,a-zA-Z在big5編碼內仍然是一個符號佔1byte (8 octets) 09/28 11:36
10F:→ josefy: 請問F大, 這是big5造成的問題嗎? 要怎麼解決呢? 09/28 12:29
11F:推 CindyLinz: use Encode; $line=Encode::decode('big5', $line); 09/28 13:38
12F:→ CindyLinz: 不過你 @data[$x] 應該是要寫成 $data[$x] 吧? 09/28 13:38
13F:→ CindyLinz: 然後..為什麼讀進$data[$x]以後,$x加1,印$data[$x+1] ? 09/28 13:39
14F:→ josefy: 感謝Cindy大, 小弟試試看! 09/28 23:07