Как извлечь поля из файла CSV в Perl? - PullRequest
5 голосов
/ 26 февраля 2010

Я хочу извлечь определенные поля из CSV-файла (830 тыс. Записей) и сохранить в хэш Есть ли какой-нибудь быстрый и простой способ сделать это в Perl без использования внешних методов?

Как мне этого добиться?

Ответы [ 4 ]

11 голосов
/ 26 февраля 2010

Использовать Текст :: CSV_XS . Это быстро, в меру гибко и очень хорошо проверено. Ответ на многие из этих вопросов - что-то на CPAN. Зачем тратить время на то, чтобы сделать что-то не такое хорошее, как то, что многие люди уже усовершенствовали и протестировали?

Если вы не хотите использовать внешние модули, что является глупым возражением, посмотрите на код в Text :: CSV_XS и сделайте это. Я постоянно удивляюсь, что люди думают, что, хотя они думают, что не могут использовать модуль, они не будут использовать известное и протестированное решение в качестве примера кода для той же задачи.

0 голосов
/ 04 сентября 2015

использование команды split сделало бы работу, я думаю. (угадывание столбцов через запятую, запятых в полях нет)

    while (my $line = <INPUTFILE>){
    @columns= split ('<field_separator>',$line);  #field separator is ","
    }

, а затем из элементов массива "column" вы можете создать любой хеш, какой захотите.

0 голосов
/ 26 февраля 2010

при условии нормального csv (т.е. без встроенных запятых), чтобы получить 2-е поле, например

 $ perl -F"," -lane 'print $F[1];' file
0 голосов
/ 26 февраля 2010

См. Также этот фрагмент кода , взятый из The Perl Cookbook , которая сама по себе является отличной книгой для Perl-решения общих проблем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...