我有一个从文件读取数据的功能,但我在读取数据时遇到问题
输入文件: 1,S1-88,S2-53,S3-69,S4-64
File.open(file_path).each do |line|
p line.gsub(/\s+/, "")
end
输出: “1,S1 -88,S2 -53,S3 -69,S4 -64 \ n”
问题是,它在s1 -integer之后添加了一个额外的空格,s2 -integer就是这样,我试过.gsub(/ \ s + /,“”)从字符串中删除空格但是它不起作用,请任何人都可以帮助我为什么会这样,我如何覆盖这个问题或者它可能是文件编码问题?
答案 0 :(得分:4)
如果你是binread,基本上你在
之间有UTF-8字符irb(main):013:0> f = File.binread('f2.txt')
=> "1,S1\xC2\xAD-88,S2\xC2\xAD-53,S3\xC2\xAD-69,S4\xC2\xAD-64"
\xC2\xAD
基本上是空格字符
这可能是因为您从某处错误地复制了它,或者因为上帝而在您的文本中引入了它。不知道。 You an check here,它表示您的文字之间有隐藏的字符。
这将删除所有不想要的字符。
File.foreach('f2.txt') do |f|
puts f.gsub(/[^\\s!-~]/, '')
end
=> 1,S1-88,S2-53,S3-69,S4-64