Быстрее CSV + пытается найти уникальные предметы - PullRequest
2 голосов
/ 06 декабря 2011

У меня есть CSV-файл, в котором я пытаюсь найти все уникальные значения в столбцах после столбца 2, где столбец 1 имеет то же значение, и объединить его в новом CSV-файле.Я знаю, это звучит немного запутанно, поэтому вот пример:

образец исходного файла foo.csv:

"Boom Lifts","Model Number","Manufacturer","Platform Height","Horizontal Outreach","Lift Capacity"
"Boom Lifts","Model Number","Platform Height","Horizontal Outreach","Up & Over Height","Platform Capacity"
"Boom Lifts","Model Number","Platform Height","Horizontal Outreach","Up & Over Height"
"Pusharound Lifts","Model Number","Manufacturer","Platform Height","Stowed Height"
"Scissor Lifts","Model Number","Manufacturer","Platform Height","Stowed Height","Overall Dimensions","Platform Extension"
"Scissor Lifts","Overall Dimensions","Platform Size","Platform Extension","Lift Capacity"

идеальный результат bar.csv:

"Boom Lifts","Model Number","Manufacturer","Platform Height","Horizontal Outreach","Lift Capacity","Up & Over Height","Platform Capacity",,,
"Pusharound Lifts","Model Number","Manufacturer","Platform Height","Stowed Height"
"Scissor Lifts","Model Number","Manufacturer","Platform Height","Stowed Height","Overall Dimensions","Platform Size","Platform Extension","Lift Capacity"

каждая строка имеет разную длину, и это довольно большой файл (более 5 тыс. Строк), я полностью ломаю голову над тем, как выполнять сопоставление / манипуляции со строками.И да, у некоторых из этих строк есть запятые, где есть «пустые ячейки».Я использовал Faster CSV, так что если есть способ сделать это, было бы здорово.

указатели?желательно что-то, что не заставит мою mbp заскрипеть?

1 Ответ

1 голос
/ 06 декабря 2011

Предполагая, что вы можете получить его в 2d массив с помощью Faster CSV:

a = [
  ["Boom Lifts","Model Number","Manufacturer","Platform Height","Horizontal Outreach","Lift Capacity"]
  ["Boom Lifts","Model Number","Platform Height","Horizontal Outreach","Up & Over Height","Platform Capacity"]
  ["Boom Lifts","Model Number","Platform Height","Horizontal Outreach","Up & Over Height"]
  ["Pusharound Lifts","Model Number","Manufacturer","Platform Height","Stowed Height"]
  ["Scissor Lifts","Model Number","Manufacturer","Platform Height","Stowed Height","Overall Dimensions","Platform Extension"]
  ["Scissor Lifts","Overall Dimensions","Platform Size","Platform Extension","Lift Capacity"]
]

a.group_by {|e| e[0]}.map {|e| e.flatten.uniq}

получает вас:

[
  ["Boom Lifts", "Model Number", "Manufacturer", "Platform Height", "Horizontal Outreach", "Lift Capacity", "Up & Over Height", "Platform Capacity"]
  ["Pusharound Lifts", "Model Number", "Manufacturer", "Platform Height", "Stowed Height"]
  ["Scissor Lifts", "Model Number", "Manufacturer", "Platform Height", "Stowed Height", "Overall Dimensions", "Platform Extension", "Platform Size", "Lift Capacity"]
]

Не будет мгновенным, но не должно снижать ваш MBP.

...