Разделите файл на строки с readlines
, затем для каждой строки используйте String#split
через запятую.Затем, если вам нравится (для вашего «второго пути») транспонирование.
Учитывая файл people.txt
bob jones,19,moore reef,yes,no
jenny smith, 21,reef park,yes,yes
any body, 12,somewhere,no,no
, тогда строки файла будут сжаты следующим образом:
people = IO.readlines("people.txt")
p people
Это дает
["bob jones,19,moore reef,yes,no\n",
"jenny smith, 21,reef park,yes,yes\n",
"any body, 12,somewhere,no,no"]
В этот момент у вас есть несколько дополнительных строк новой строки, но они исчезают, когда вы обрабатываете строку за строкой, добавляя String#chomp
:
result = []
people = IO.readlines("people.txt")
people.each {|line| result << line.chomp.split(",")}
p result
Это дает
[["bob jones", "19", "moore reef", "yes", "no"],
["jenny smith", " 21", "reef park", "yes", "yes"],
["any body", " 12", "somewhere", "no", "no"]]
Вторая часть вашего вопроса - как получить ломтиков на столбец.Самый простой способ - использовать transpose
.Вот так:
result = []
people = IO.readlines("people.txt")
people.each {|line| result << line.chomp.split(",")}
p result.transpose
Это дает
[["bob jones", "jenny smith", "any body"],
["19", " 21", " 12"],
["moore reef", "reef park", "somewhere"],
["yes", "yes", "no"],
["no", "yes", "no"]]
ОБНОВЛЕНИЕ Я должен был отредактировать свой ответ, чтобы добавить его в chomps!Также, к вашему сведению, вы также можете добавить некоторые обрезки строк.Я позволю тебе посмотреть это.: -)