解析文本文件并在Ruby中进行排序?
答
目前尚不清楚您的文件中的数据格式是什么,以及您用于排序的标准,所以我无法为您提供准确的答案。
但是,基本上,你可能需要像这样:
File.open("file_name","r").read.split(",").sort_by {|x| x.length}
您:
- 打开使用
File.open
文件。 - 阅读整个文件并获得一个字符串。您也可以使用
each
方法逐行读取文件。 - 拆分字符串使用
split
。使用的分隔符是,
。 - 使用
sort_by
根据块中指定的标准对它们进行排序。
答
如果“带分隔符的文本文件”你的意思是CSV文件(字符分隔值),那么你可以使用csv
library,这是标准库的一部分,对其进行解析。 CSV为您提供外观和感觉像Ruby Hash
es和Array
s的对象,因此您可以使用所有标准Ruby方法进行排序,过滤和迭代,包括前述Enumerable#sort_by
。
“r”在这里如何使用?它代表什么?另外,我不太明白{| x | w.length}。如果你可以请分解一下像本人这样的Ruby n00b,我会非常感激。 – 2009-11-09 04:01:22
“r”表示文件正在“读”模式下打开。此外,w.lenth看起来像一个类型。它应该是x.length。 '{| x | x.length}'是传递给'sort_by'方法的块。它使sort_by方法按每个“分割”单词的长度排序。在这里,使用分隔符的单词分隔符是逗号(,)。 – Chirantan 2009-11-09 04:33:15
我现在看到了。非常感谢你的澄清。 – 2009-11-09 05:16:00