用换行符写文件

时间:2016-11-04 18:12:08

标签: ruby

所以我有一个包含以下文字的文件:

[[[[[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]]]]]

我需要在每第四个数字后断行,所以看起来像这样:

[[[[[1, 2], [3, 4]],
[[1, 2], [3, 4]], 
[[1, 2], [3, 4]], 
[[1, 2], [3, 4]], 
[[1, 2], [3, 4]]]]]

我可以将文件加载到新数组中,使其成为字符串,然后使用:

.delete("[]").delete(" ").split(",").map(&:to_i)

并使用:

.each_slice(4) { |a| p a }

得到:

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

但我不知道,如何使用换行符将这些行写回文件。我需要将文件加载到另一个程序中,删除每个括号,以便上面的输出正常工作。

有没有办法用“\ n”来解决它?

PS:这是我在本网站上为我的项目提供了很多帮助之后的第一篇文章。

3 个答案:

答案 0 :(得分:1)

假设您不关心从输入中嵌套数组,您可以执行以下操作:

arr = [[[[[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]]]]]
puts arr.flatten.each_slice(4).map(&:to_s).join("\n")
#=> [1, 2, 3, 4]
    [1, 2, 3, 4]
    [1, 2, 3, 4]
    [1, 2, 3, 4]
    [1, 2, 3, 4]

`

答案 1 :(得分:0)

data = [
  '[1, 2]',
  '[1, 2]',
  '[1, 2]',
]

File.open('output.txt', 'w') do |f|
  data.each do |string| 
    f.puts string
  end
end

$ cat output.txt
[1, 2]
[1, 2]
[1, 2]

答案 2 :(得分:0)

另一种方式是:

arr = [[[[[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]], [[1, 2], [3, 4]]]]]

> arr.flatten(2).each { |string| p sting.flatten }
# => [1, 2, 3, 4]
# [1, 2, 3, 4]
# [1, 2, 3, 4]
# [1, 2, 3, 4]
# [1, 2, 3, 4]