迭代数组中的每个单词



我有一个非常大的.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

相关内容

  • 没有找到相关文章

最新更新