我需要从CSV行中删除或去除空格。
test.csv
60 500, # want 60500
8 100, # want 8100
5 400, # want 5400
480, # want 480
remove_space.rb
require 'csv'
CSV.foreach('test.csv') do |row|
row = row[0]
row = row.strip
row = row.gsub(" ","")
puts row
end
我不明白为什么它不起作用。结果与test.csv
相同有什么主意吗?
答案 0 :(得分:3)
您的test.csv
文件包含narrow no-break space(U + 202F)Unicode字符。这是一个非空白字符。 (常规空格字符为U + 0020。)
您可以在此处查看不同的unicode空间:http://jkorpela.fi/chars/spaces.html
这是一个更通用的脚本-使用POSIX bracket group-删除所有“空格”字符:
require 'csv'
CSV.foreach('test.csv') do |row|
row = row[0]
row = row.gsub(/[[:space:]]/,"")
puts row
end
答案 1 :(得分:2)
问题是那些不是普通空格而是Narrow No-Break Spaces:
require 'csv'
CSV.foreach('/tmp/test.csv') do |row|
puts row[0].delete "\u202f"
end
#⇒ 60500
# 8100
# 5400
# 480
您可以使用\p{Space}
matcher除去所有空格,包括unicode空格。
require 'csv'
CSV.foreach('/tmp/test.csv') do |row|
puts row[0].gsub /\p{Space}/, ''
end