У меня есть очень большой файл, который мне нужно проанализировать с помощью Perl. Формат файла (который я не могу изменить) был первоначально написан, чтобы разрешить открывать файл в Excel в виде CSV. В частности, для этой проблемы мне нужно заменить разделитель в каждой строке трубкой (|). Обычно это не тяжелая работа, но у меня есть несколько вопросов (ниже), и пока у меня есть решение, мне интересно, есть ли более эффективный способ выполнить мою задачу.Замена разделителей цитат и множественных запятых в Perl
- Сам данных содержит комментарии с запятыми (имеется в виду, я не могу найти и заменить на запятую)
- Каждая «клетка» ценность данных инкапсулируется в кавычки, но если клетка была пуста, то ни кавычки не являются настоящее
Пример строки в файле:
"Foo Bar","More Foo","More Bar",,,,,"Yet More","Comma,Separated,Statement"
Мое текущее решение выглядит как код ниже. Он работает, но кажется неэлегантным и требует обработки каждой строки несколько раз (что-то, чего я хочу избежать, поскольку этот файл очень большой).
# Change the delimiter
$line =~ s/",,,,,"/|||||/g;
$line =~ s/",,,,"/||||/g;
$line =~ s/",,,"/|||/g;
$line =~ s/",,"/||/g;
$line =~ s/","/|/g;
$line =~ s/^"//; # Remove leading quotation mark
$line =~ s/"$//; # Remove trailing quotation mark
Может ли кто-нибудь помочь мне найти более быстрое и элегантное решение?
Я могу принять это как дубликат. По какой-то причине я не рассматривал проблему в том, что было описано в этой теме, чтобы найти ее. Очень признателен! – GrinningX