Как удалить \ r \ n в Ruby? - PullRequest
0 голосов
/ 18 июня 2019

ошибка: неопределенный метод `delete 'для nil: NilClass

                                "updated_at" => "",
                                 "fias_ao_guid" => "\r\n",
                                    "file_path" => nil

как удалить "\ r \ n"?

             splitted_records = []
      id = 3141634
      string = 0
      row = 0
      h = {}
      record_candidate = {}
      open('/home/dayanov-sa/PGadmin/finish.csv') do |csv|
         csv.each_line do |line|
            index = 0
            row += 1
               line.split(";").each do |key_filed|
                record_candidate["#{key_filed.delete("\r\n")}"] = nil
               end if row.eql?(1)
            next if row.eql?(1)
            copy_object = Marshal.load(Marshal.dump(line))
            values = line.split(";")
            record_candidate.keys.each do |keys|
               index += 1
               record_candidate[keys] = values[index].delete("\r\n")
               end
            id = id + 1
            puts string
            splitted_records << record_candidate

Я пытаюсь удалить из хеша \ r \ n

Ответы [ 2 ]

3 голосов
/ 18 июня 2019

Это связано с тем, что некоторые хеш-ключи имеют значения nil, например ("file_path" => nil)

Вам необходимо обойти nil значения

Ваш код будет таким:

record_candidate.keys.each do |keys|
  index += 1
  if !values[index].nil?
     record_candidate[keys] = values[index].delete("\r\n")
  end
end
0 голосов
/ 18 июня 2019

Ваш код выглядит как попытка разобрать CSV с заголовком. Руби уже имеет это в stdlib:

require 'csv'

file_contents = File.read('/home/dayanov-sa/PGadmin/finish.csv')
data = CSV.parse(file_contents, headers: true, col_sep: ';')
splitted_records = data.map(&:to_h)

см. документацию ruby ​​на CSV

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...