【发布时间】:2019-12-05 18:55:31
【问题描述】:
我有这个 sn-p 代码,我打算用它来从 CSV 文件中获取名字和姓氏,以获取特定的输出。最终目标是在用户名中包含姓氏以及名字的第一个和最后一个字母。
我拥有的 CSV 文件有名字和姓氏标题。
例子:
名字 John 姓氏:Doe 期望的输出:doejn
CSV 文件的前两行是什么样的:
First Name: Last Name:
John Doe
我拥有的代码:
require 'csv'
filename = 'employeedata.csv'
CSV.foreach(filename, headers: true) do |row|
first_name_char = row['First Name'].strip.split('')
useradd_name = "#{row['Last Name']}#{first_name_char.first}#{first_name_char.last}"
puts useradd_name
end
期望的输出:
DoeJn
当我这样做时,它会出错。
这是我得到的错误:
Traceback (most recent call last):
13: from Nick_Hyder_Project3.rb:17:in `<main>'
12: from C:/Ruby26-x64/lib/ruby/2.6.0/csv.rb:509:in `foreach'
11: from C:/Ruby26-x64/lib/ruby/2.6.0/csv.rb:657:in `open'
10: from C:/Ruby26-x64/lib/ruby/2.6.0/csv.rb:510:in `block in foreach'
9: from C:/Ruby26-x64/lib/ruby/2.6.0/csv.rb:1236:in `each'
8: from C:/Ruby26-x64/lib/ruby/2.6.0/csv.rb:1236:in `each'
7: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:303:in `parse'
6: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:779:in `parse_quotable_loose'
5: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:28:in `each_line'
4: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:28:in `each_line'
3: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:31:in `block in each_line'
2: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:827:in `block in parse_quotable_loose'
1: from C:/Ruby26-x64/lib/ruby/2.6.0/csv/parser.rb:1078:in `emit_row'
Nick_Hyder_Project3.rb:18:in `block in <main>': undefined method `strip' for nil:NilClass (NoMethodError)
是我没有正确的库引起的错误吗?它会因为我没有数组来存储新用户名而出错吗?
【问题讨论】:
-
希望编辑能更清楚地显示问题。