функция разделения строк всегда удаляет терминатор. Вы хотите подстроки, которые начинаются с 'D'. Регулярное выражение было бы лучше здесь
a.scan(/D[0-9]*/).each do |line|
#do stuff with each piece of data
end
Кстати, как я уже сказал в своем комментарии, я абсолютно НЕ эксперт по регулярным выражениям, даже не очень хорошо. Итак, если кто-то найдет в этом зияющее целое, дайте мне знать, но он должен работать с вашим входом.