从Ruby中的.txt文件中查找唯一的姓氏
我需要从一个.txt文件中查找唯一的姓氏,该文件如下所示:从Ruby中的.txt文件中查找唯一的姓氏,ruby,unique,Ruby,Unique,我需要从一个.txt文件中查找唯一的姓氏,该文件如下所示: Kent, Mackenna -- ut Voluptatem ipsam et at. Marven, Gardens -- non Facere et necessitatibus animi. McLaughlinn, Matt -- consequatur Eveniet temporibus ducimus amet eaque. Lang, August -- pariatur Unde vo
Kent, Mackenna -- ut
Voluptatem ipsam et at.
Marven, Gardens -- non
Facere et necessitatibus animi.
McLaughlinn, Matt -- consequatur
Eveniet temporibus ducimus amet eaque.
Lang, August -- pariatur
Unde voluptas sit fugit.
Brad, Nick -- et
Maiores ab officia sed.
Adam, Levine -- error
Repellendus alias officia amet et perspiciatis.
Learner, York -- nesciunt
Incidunt et ut necessitatibus porro.
Ortiz, Andrew -- fuga
Tempore eos et hic.
Lang, Bryant -- et
Laborum perferendis inventore eveniet.
def names(file_name)
File.
readlines(file_name).
reject.
with_index(1) { |_, id| id.even? }.
map { |line| line.split(' --').first.split(', ') }.
map { |ln, fn| { lastname: ln, firstname: fn } }
end
到目前为止,我已经:
FNAME = 'example.txt'
# maps for last name in file
def last_name_from_file(file_name)
last_name = File.readlines(file_name).reject(&:empty?)
last_name.map do |line|
line.split.first
end
end
puts last_name_from_file('example.txt')
但这给了我输出,其中包括Lorem文本和姓氏
#Kent
#Voluptatem
#Marven
#Facere
#McLaughlinn
#Eveniet
#Lang
#Unde
#Brad
...
正如我所见,lorem的线条是均匀的,所以你可以拒绝它们
def last_name_from_file(file_name)
File.
readlines(file_name).
reject.
with_index(1) { |_, id| id.even? }.
map { |line| line.split(',').first }.
uniq
end
好吧,我怎么才能知道你的名字 您可以这样做:
Kent, Mackenna -- ut
Voluptatem ipsam et at.
Marven, Gardens -- non
Facere et necessitatibus animi.
McLaughlinn, Matt -- consequatur
Eveniet temporibus ducimus amet eaque.
Lang, August -- pariatur
Unde voluptas sit fugit.
Brad, Nick -- et
Maiores ab officia sed.
Adam, Levine -- error
Repellendus alias officia amet et perspiciatis.
Learner, York -- nesciunt
Incidunt et ut necessitatibus porro.
Ortiz, Andrew -- fuga
Tempore eos et hic.
Lang, Bryant -- et
Laborum perferendis inventore eveniet.
def names(file_name)
File.
readlines(file_name).
reject.
with_index(1) { |_, id| id.even? }.
map { |line| line.split(' --').first.split(', ') }.
map { |ln, fn| { lastname: ln, firstname: fn } }
end
现在你可以称之为:
names = names('example.txt')
names
# => [{:lastname=>"Kent", :firstname=>"Mackenna"}, {:lastname=>"Marven", :firstname=>"Gardens"}, {:lastname=>"McLaughlinn", :firstname=>"Matt"}, {:lastname=>"Lang", :firstname=>"August"}, {:lastname=>"Brad", :firstname=>"Nick"}, {:lastname=>"Adam", :firstname=>"Levine"}, {:lastname=>"Learner", :firstname=>"York"}, {:lastname=>"Ortiz", :firstname=>"Andrew"}, {:lastname=>"Lang", :firstname=>"Bryant"}]
names.map { |name| name[:lastname] }
# => ["Kent", "Marven", "McLaughlinn", "Lang", "Brad", "Adam", "Learner", "Ortiz", "Lang"]
names.map { |name| name[:firstname] }
# => ["Mackenna", "Gardens", "Matt", "August", "Nick", "Levine", "York", "Andrew", "Bryant"]
类似于昨天的事情:
def last_name_from_file(fname)
File.open(fname, "r").each_with_object([]).with_index do |(line, o), i|
o << line.split(',').first if i.even?
end.uniq
end
puts last_name_from_file('example.txt')
#Kent
#Marven
#McLaughlinn
#...
def last_name_from_file(fname)
open(fname,“r”)。每个_都带有_对象([])。带有_索引do |(行,o),i|
o让我们创建文件
FName = 'temp.txt'
IO.write(FName,
所有奇数行都缩进,但最后一行除外。如果它们总是缩进,请编辑示例;如果它们可能没有缩进,请这样说。请编辑以显示给定示例的完整预期结果。无论何时给出示例,请显示预期结果(作为Ruby对象)。好的,我如何获得第一个名称?