解析文本文件并在Ruby中进行排序?

问题描述:

我想写一个Ruby程序,它可以解析三个单独的文本文件,每个文件包含不同的分隔符,然后根据特定的标准对它们进行排序。解析文本文件并在Ruby中进行排序?

有人可以请指出我在正确的方向吗?

目前尚不清楚您的文件中的数据格式是什么,以及您用于排序的标准,所以我无法为您提供准确的答案。

但是,基本上,你可能需要像这样:

File.open("file_name","r").read.split(",").sort_by {|x| x.length} 

您:

  • 打开使用File.open文件。
  • 阅读整个文件并获得一个字符串。您也可以使用each方法逐行读取文件。
  • 拆分字符串使用split。使用的分隔符是,
  • 使用sort_by根据块中指定的标准对它们进行排序。
+0

“r”在这里如何使用?它代表什么?另外,我不太明白{| x | w.length}。如果你可以请分解一下像本人这样的Ruby n00b,我会非常感激。 – 2009-11-09 04:01:22

+1

“r”表示文件正在“读”模式下打开。此外,w.lenth看起来像一个类型。它应该是x.length。 '{| x | x.length}'是传递给'sort_by'方法的块。它使sort_by方法按每个“分割”单词的长度排序。在这里,使用分隔符的单词分隔符是逗号(,)。 – Chirantan 2009-11-09 04:33:15

+1

我现在看到了。非常感谢你的澄清。 – 2009-11-09 05:16:00

Enumerable#sort_by将允许您使用特定比较函数对数组(或其他可枚举对象)进行排序。

如果“带分隔符的文本文件”你的意思是CSV文件(字符分隔值),那么你可以使用csv library,这是标准库的一部分,对其进行解析。 CSV为您提供外观和感觉像Ruby Hash es和Array s的对象,因此您可以使用所有标准Ruby方法进行排序,过滤和迭代,包括前述Enumerable#sort_by