2012-04-07 128 views
1

如何从Ruby文件中一次读取多行文件?从文件中读取多行文件

我尝试使用each_slice(2),也做了:require 'enumerator',但它不起作用。我收到以下错误:

undefined method `each_slice' for #<String:0x877d12c> (NoMethodError) 
+1

你怎么定义“线”,你是如何得到这个数据?它是在一个字符串中还是正在从文件中读取? – 2012-04-07 21:14:27

+0

我以为我在标题中解释它,它在一个文件中! – bytebiscuit 2012-04-07 21:24:51

+1

@bytebiscuit:如果没有您尝试使用的*代码*,错误消息是无用的。只是告诉我们你使用'each_slice'没有帮助,因为你显然是以错误的方式使用它(在一个字符串上?)。您的代码也会告诉我们您尝试阅读的来源。 – 2012-04-07 21:26:28

回答

7

两个IOStringlines枚举,您可以致电each_slice

irb(main):004:0> STDIN.lines.each_slice(2).take(2) 
a 
a 
b 
c 
=> [["a\n", "a\n"], ["b\n", "c\n"]] 

当然,你可以与任何其他IO实例替代STDIN(打开文件)。演示用的字符串:

irb(main):005:0> "a\na\nb\nc".lines.each_slice(2).to_a 
=> [["a\n", "a\n"], ["b\n", "c"]] 

在Ruby中,这些工作都> = 1.8.7

+0

thnx为了澄清与此代码,我明白了吧! – bytebiscuit 2012-04-07 21:31:05

+1

@Niklas完美的工作,但是在Ruby ruby​​ 2.0中,它给出了一个警告:'IO#行被弃用;使用#each_line来代替'。 因此,用'STDIN.each_slice(2).take(2)'代替上述行代替。 – 2016-05-17 19:41:22