Perl Language
Séparer une chaîne sur des séparateurs non cotés
Recherche…
parse_line ()
Utilisation de parse_line()
de Text :: ParseWords :
use 5.010;
use Text::ParseWords;
my $line = q{"a quoted, comma", word1, word2};
my @parsed = parse_line(',', 1, $line);
say for @parsed;
Sortie:
"a quoted, comma"
word1
word2
Text :: CSV ou Text :: CSV_XS
use Text::CSV; # Can use Text::CSV which will switch to _XS if installed
$sep_char = ",";
my $csv = Text::CSV->new({sep_char => $sep_char});
my $line = q{"a quoted, comma", word1, word2};
$csv->parse($line);
my @fields = $csv->fields();
print join("\n", @fields)."\n";
Sortie:
a quoted, comma
word1
word2
REMARQUES
Par défaut, Text :: CSV ne
Text::ParseWords
pas les espaces autour du caractère séparateur,Text::ParseWords
. Cependant, l'ajout deallow_whitespace=>1
aux attributs du constructeur permet d'obtenir cet effet.my $csv = Text::CSV_XS->new({sep_char => $sep_char, allow_whitespace=>1});
Sortie:
a quoted, comma word1 word2
La bibliothèque prend en charge les caractères spéciaux échappés (guillemets, séparateurs)
La bibliothèque prend en charge le caractère séparateur configurable, le caractère de citation et le caractère d'échappement
Documentatoin: http://search.cpan.org/perldoc/Text::CSV
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow