当内容格式不正确时,在Ruby中解析文本文件

时间:2010-02-21 04:19:23

标签: ruby parsing text

我正在尝试读取文件并创建内容的散列图,但是我在解析步骤时遇到了麻烦。

是文本文件的一个示例
put 3
returns 3
between
 3
pargraphs 1
4
 3
#foo 18
****** 2

单词成为键,数字是值。请注意,间距相当不稳定。这个词并不总是一个单词(不会被/ \ w + /选中),与该单词相关的数字并不总是在同一行。这就是我称之为格式不正确的原因。如果一行中有一个单词和一个数字,我可以将它拆分,但不幸的是,情况并非如此。我正在尝试创建这样的哈希映射。

{"put"=>3, "#foo"=>18, "returns"=>3, "paragraphs"=>1, "******"=>2, "4"=>3, "between"=>3}

来自Java,这很容易。使用Scanner我可以使用scanner.next()用于下一个键,scan.nextInt()用于与之关联的数字。我不太确定如何在Ruby中执行此操作,因为我似乎必须使用正则表达式。

1 个答案:

答案 0 :(得分:2)

我建议您只使用split,如:

h = Hash[*s.split]

s是你的文字(例如s = open('filename').read。信不信由你,这将准确地告诉你你所追求的是什么。

编辑:我意识到你想要将值作为整数。您可以按如下方式添加:

h.each{|k,v| h[k] = v.to_i}