我有一个非常大的.txt文件,我想编写一个 ruby 脚本来过滤一些数据。基本上,我想遍历每一行,然后将该行中的单个单词存储在数组中,然后对这些单词进行操作。但是我无法在数组中分别获取每个单词
tracker_file.each_line do|line|
arr = "#{line}"
我可以像这样得到整行,但是单个单词呢?
谢谢
对字符串使用 split
方法。
irb(main):001:0> line = "one two three"
=> "one two three"
irb(main):002:0> line.split
=> ["one", "two", "three"]
所以你的例子是:
tracker_file.each_line do |line|
arr = line.split
# ... do stuff with arr
end
tracker_file.each_line do |line|
line.scan(/[w']+/) do |word|
...
end
end
如果不需要遍历行,可以直接遍历单词:
tracker_file.read.scan(/[w']+/) do |word|
...
end
你可以做:
tracker_file.each_line do |line|
arr = line.split
# Then perform operations on the array
end
split
方法将根据分隔符(在本例中为空格)将字符串拆分为数组。
如果您正在阅读用英语编写的内容,并且文本可能包含连字符、分号、空格、句点等,则可以考虑使用正则表达式,如下所示:
/[a-zA-Z]+(-[a-zA-Z]+)*/
以提取单词。
不必使用IO#each_line
,你也可以使用IO#each(separator_string)
另一种选择是使用 IO#gets
:
while word = tracker_file.gets(/separator_regexp/)
# use the word
end