Я работаю над проектом, который включает в себя синтаксический анализ большого файла csv в Perl, и я хочу сделать вещи более эффективными.Как эффективно проанализировать CSV-файл в Perl?
Мой подход был к split()
файлу по линиям сначала, а затем split()
каждой строке снова запятыми, чтобы получить поля. Но это субоптимально, так как требуется не менее двух проходов по данным. (один раз разделить по линиям, затем еще раз для каждой строки). Это очень большой файл, поэтому обработка обработки пополам будет значительным улучшением для всего приложения.
Мой вопрос в том, что является наиболее эффективным временем для синтаксического анализа большого файла CSV с использованием только встроенных инструментов?
примечание: каждая строка имеет различное количество токенов, поэтому мы не можем просто игнорировать строки и делиться только запятыми. Также мы можем предположить, что поля будут содержать только буквенно-цифровые данные ascii (никаких специальных символов или других трюков). Кроме того, я не хочу проходить параллельную обработку, хотя она может работать эффективно.
редактировать
Он может только включать встроенные инструменты, которые поставляются с Perl 5.8. По бюрократическим причинам, я не могу использовать любые модули сторонних (даже если размещенные на CPAN)
других редактировать
Давайте предположим, что наше решение разрешено только иметь дело с данными файла, когда он будет полностью загружен в Память.
еще один редактировать
Я просто понял, как глупо это вопрос. Извините за то, что потратил ваше время. Голосование закрывается.
Любая причина вам нужно только встроенные инструменты (я не уверен, если предположить нет прав администратора). В противном случае попробуйте использовать модуль pertext. Это упрощает анализ CSV: http://search.cpan.org/~erangel/Text-CSV/CSV.pm –
Зачем читать весь файл и 'split()' по строкам? Если вы просто открываете файл и используете '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' –
mob
@Mike некоторые модули perl из cpan не требуют компиляции и могут быть использованы без права администратора ... если есть один из них, он все равно будет указан из вашего нужного образца? – Prix