Как пропустить определенные столбцы при разборе текстового файла с Ruby? - PullRequest
2 голосов
/ 03 февраля 2009

Мне нужно разобрать текстовый файл с разделителями табуляции в Ruby, чтобы извлечь из него некоторые данные. По какой-то неизвестной причине некоторые столбцы не используются и являются просто разделителями; Я хотел бы игнорировать эти столбцы, поскольку мне не нужен их вывод (однако я не могу просто игнорировать все пустые столбцы, поскольку некоторые допустимые столбцы имеют пустые значения). Я уже знаю индексы этих столбцов (например, столбцы 6, 14, 24 и 38).

Хотя я мог бы просто добавить условное выражение во время синтаксического анализа файла и сказать, что нужно выполнить синтаксический анализ, если только это не один из этих столбцов, это не выглядит очень «рубиново» - есть ли лучший и более элегантный способ справиться с этим? RegExps, возможно? Я думал сделать что-то вроде [6, 14, 24, 38].each { |x| columns.delete_at(x) }, чтобы удалить неиспользуемые столбцы, но это заставит меня пересмотреть индексы столбцов, которые мне действительно нужны. То, что я действительно хотел бы сделать, это просто пройтись по всему циклу, проверить индекс текущего столбца и игнорировать его, если он один из «плохих». Однако, кажется очень уродливым иметь такой код, как unless x == 6 || x == 14 || x == 24 || x == 38

1 Ответ

7 голосов
/ 03 февраля 2009

Нет необходимости в таком массивном условном выражении.

bad_cols = [6, 14, 24, 38]
columns.each_with_index do |val,idx|
  next if bad_cols.include? idx
  #process the data
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...