У меня есть два текстовых файла, и у них есть одно и то же поле (домашнее животное). Я хочу объединить два файла и вывести новый файл, содержащий три поля (владелец домашних животных). Мой код в основном зависит от того, есть ли у обоих файлов одинаковое домашнее животное (имя и количество домашних животных), чем я добавлю имя покупателя в поле покупателя в новом файле. Он должен распечатываться только в том случае, если два файла имеют одинаковые файлы с домашним животным.Как сравнить два текстовых файла со значением в ruby
Но мой код не работал, как я хочу, нужна помощь, спасибо.
input_file_1 (.txt)
owner pet
Michael dog, cat
John pig, rabbit
Marry dog, cat
input_file_2 (.txt)
buyer pet
Sean cat, dog
Mark cat, dog
Joy dog, mouse
Tina cat, dog
Я хочу, чтобы результат выглядел так:
owner pet buyer
Michael cat, dog Sean, Mark, Tina
Mary cat, dog Sean, Mark, Tina
Мой код выглядит следующим образом:
input_file_1 = ARGV[0]
input_file_2 = ARGV[1]
hash_1 = {}
File.readlines(input_file_1, "\n").each do |line|
owner, pet = line.chomp.split("\t")
hash_1[owner] = pet
end
hash_2 = {}
File.readlines(input_file_2, "\n").each do |line|
buyer, pet = line.chomp.split("\t")
hash_2[buyer] = pet
end
hash_1.each do |key, value|
if hash_2.has_value? value
puts "#{key}\t#{value}\t#{hash_2[key]}"
end
end
Есть ли разница между «кошкой, собакой» и «собаками, кошками»? Что это значит? Кроме того, вы разделяете символ «\ t», но где он отображается в ваших входных файлах? Только после имени владельца/покупателя, а также между «кошкой» и «собакой»? –
Да, оба файла уже отсортированы как A-Z. Символ «\ t» появляется после владельца/покупателя «кошка» и «собака». – Michael