Я взять правую часть и очистить его после того, как она comparate со средней частью и сэкономить, если равныКак я могу отделить полное имя?
> #!/usr/bin/env ruby
require 'rubygems'
require 'levenshtein'
require 'csv'
# Extending String class for blank? method
class String
def blank?
self.strip.empty?
end
end
# In
lines = CSV.read('entrada.csv')
lines.each do |line|
id = line[0].upcase.strip
left = line[1].upcase.strip
right = line[2].upcase.strip
eduardo = line[2].upcase.split(' ','de')
line[0] = id
line[1] = left
line[2] = right
line[4] = eduardo[0]+eduardo[1]
distance = Levenshtein.distance left, right
line << 99 if (left.blank? or right.blank?)
line << distance unless (left.blank? or right.blank?)
end
# Out
# counter = 0
CSV.open('salida.csv', 'w') do |csv|
lines.each do |line|
# counter = counter + 1 if line[3] <= 3
csv << line
end
end
# p counter
Середина корректный Rigth я должен исправить
Некоторые примеры:
Eduardo | Абнер | Эррера | Herrera -> Eduardo Herrera
Angel | De | Леон -> Angel De Leon
- Maira | Анжелина | de | Леон -> Майра де Леон
- Marquilla | Гутьеррес | Petronilda | De | Leon -> Marquilla Petronilda
_Sidenote: _ Я понятия не имею, о чем вы просите, но я твердо верю, что расстояние Левенштейна не имеет ничего общего с вашей задачей. – mudasobwa
да, например, на испанском языке у нас есть полное имя, включая фамильное имя от мужа, поэтому я должен отделить первое имя и фамилию и, в том числе, замуж, например (Елена де Эррера) –
Не могли бы вы дать четкие примеры входы и выходы? Как «Майкл Джордж Шверн» -> '{сначала:« Майкл », середина:« Джордж », последний:« Шверн »}. – Schwern