所以我有一个包含以下文字的文件:
[[[[[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:这是我在本网站上为我的项目提供了很多帮助之后的第一篇文章。
答案 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]