删除重复的单词文本文件

时间:2017-11-11 00:57:47

标签: ruby

我很确定我弄错了。但也许这样的事情呢?

file_names = ['phone_numbers.txt']
file_names.each do |file_name|
  words_to_exclude = ["Employee Marked Urgency as: low", "Employee Marked Urgency as: high"]
  text = File.read(file_name)
  lines = text.split("\n")
  new_contents = lines.uniq.reject do |word|
    words_to_exclude.include? word
  end.join("\n")
  File.open(file_name, "w") { |file| file.puts new_contents }
end

1 个答案:

答案 0 :(得分:1)

您可以通过换行符拆分它,在该列表上调用uniq,然后在写入之前加入换行符。

file_names = ['phone_numbers.txt']
file_names.each do |file_name|
  text = File.read(file_name)
  lines = text.split("\n")
  new_contents = lines.uniq.join("\n")
  File.open(file_name, "w") { |file| file.puts new_contents }
end

请注意,您不应使用|file_names|,因为它不准确。该变量引用单个文件名(循环中的当前文件名)。所以我将其更改为file_name

要关注您的问题,如果您想使用除唯一性之外的某个指标过滤使用中的字词,则可以使用Enumerable#selectEnumerable#reject。例如:

words_to_exclude = ["foo", "bar"]
new_contents = lines.uniq.reject do |word|
  words_to_exclude.include? word
end.join("\n")