在ruby中读取的文件以字符形式输出为空格
我有一个从文件中读取数据的函数,但在读取数据时遇到问题 在文件中输入: 1、S1-88、S2-53、S3-69、S4-64在ruby中读取的文件以字符形式输出为空格,ruby,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-整数、s2-整数之后添加了一个额外的空格,就像这样,我尝试了.gsub(/\s+/,“”)来删除字符串中的空白,但它不起作用,请任何人帮助我为什么会发生这
File.open(file_path).each do |line|
p line.gsub(/\s+/, "")
end
输出:
“1、S1-88、S2-53、S3-69、S4-64\n”
问题是,它在s1-整数、s2-整数之后添加了一个额外的空格,就像这样,我尝试了.gsub(/\s+/,“”)来删除字符串中的空白,但它不起作用,请任何人帮助我为什么会发生这种情况,我如何覆盖这个问题,或者它可能是文件编码问题?如果您不阅读,基本上,中间有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"
基本上是空白字符
这可能是因为你从某个地方错误地复制了它,或者是因为上帝而在你的文本中引入了它。不知道,它显示文本之间有隐藏字符
这将删除所有不需要的字符
File.foreach('f2.txt') do |f|
puts f.gsub(/[^\\s!-~]/, '')
end
=> 1,S1-88,S2-53,S3-69,S4-64
如果您是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"
基本上是空白字符
这可能是因为你从某个地方错误地复制了它,或者是因为上帝而在你的文本中引入了它。不知道,它显示文本之间有隐藏字符
这将删除所有不需要的字符
File.foreach('f2.txt') do |f|
puts f.gsub(/[^\\s!-~]/, '')
end
=> 1,S1-88,S2-53,S3-69,S4-64
你能描述一下你想做什么吗?预期产量是多少<代码>行应该是一个字符串,但您在其上调用
join
,就好像它是一个数组一样。这段代码是否运行?为什么需要UTF-16?@Genzume抱歉,我已经更新了一个问题,我希望输出应该与输入类似,但它在hypen(-)之前增加了一个额外的空间,例如s1-23@lacostenycoder,我想这可能是编码问题,我尝试了一些编码类型不确定StackOverflow是否在格式化方面做了一些奇怪的事情,但您的输入似乎在每个连字符之前都包含一个“不可见”字符(U+00AD软连字符)。试试.gsub(/[\s\u00ad]+/,“”)
,也许可以。你能描述一下你想做什么吗?预期产量是多少<代码>行应该是一个字符串,但您在其上调用join
,就好像它是一个数组一样。这段代码是否运行?为什么需要UTF-16?@Genzume抱歉,我已经更新了一个问题,我希望输出应该与输入类似,但它在hypen(-)之前增加了一个额外的空间,例如s1-23@lacostenycoder,我想这可能是编码问题,我尝试了一些编码类型不确定StackOverflow是否在格式化方面做了一些奇怪的事情,但您的输入似乎在每个连字符之前都包含一个“不可见”字符(U+00AD软连字符)。试试.gsub(/[\s\u00ad]+/,“”)
,也许可以。