我的帶有空格的 CSV 檔案:
Id ; FirstName ; LastName ; email
123; Marc ; TOTO ; [email protected]
我想像這樣洗掉我的csv中的空格:
Id;FirstName;LastName;email
123;Marc;TOTO;[email protected]
我會在 perl 中使用 REGEX。請問你能幫幫我嗎?最好的問候,馬克
uj5u.com熱心網友回復:
不是 perl 解決方案,但 awk 解決方案非常簡單,可能是可以接受的:
awk '{OFS="";$1=$1;print $0}' file.csv;
此程序用于OFS從通常的空格覆寫默認輸出欄位分隔符。$1=$1 強制 awk 重置整行 $0 值以在列印之前洗掉欄位分隔符。
uj5u.com熱心網友回復:
使用具有 CSV 等檔案格式的庫總是一個好主意。即使用正則運算式決議這種情況似乎微不足道且安全,但可以而且確實可以偷偷摸摸。此外,需求往往只會發生變化,專案和資料只會變得更加復雜。一旦有使用好的庫的合理代碼,專案演變通常更容易被吸收。
像優秀的Text::CSV這樣的庫可以;用作分隔符,并且可以在決議檔案時洗掉多余的空格,并使用合適的選項。
為了保持簡短和單行,功能界面很有幫助
perl -MText::CSV=csv -we'
csv (in => *ARGV, sep => ";", allow_whitespace => 1)' name.csv > new.csv
使用提供的示例檔案按需列印。
uj5u.com熱心網友回復:
盡管您的標題是remove spaces at the end of each line,但您可能希望洗掉欄位值周圍的空格。那你試試:
perl -pe "s/\s*;\s*/;/g" input_file.csv
輸出:
Id;FirstName;LastName;email
123;Marc;TOTO;[email protected]
請注意,如果欄位包含;自身abc;"foo ; bar";def或其他復雜情況,則代碼會中斷。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530931.html
標籤:CSVperl
上一篇:當我將正則運算式包含在另一個正則運算式中時如何轉義它?
下一篇:Perl:復制UDP資料包
