在ruby中读取文件,将输出作为字符中的空格

时间:2018-04-29 09:05:47

标签: ruby

我有一个从文件读取数据的功能,但我在读取数据时遇到问题

输入文件: 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 + /,“”)从字符串中删除空格但是它不起作用,请任何人都可以帮助我为什么会这样,我如何覆盖这个问题或者它可能是文件编码问题?

1 个答案:

答案 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