Transposer en perl
J'ai commencé à apprendre le perl et j'aime essayer de nouvelles choses.
J'ai un problème dans un traitement de texte.
J'ai un peu de texte de la forme,
0 1 2 3 4 5 6 7 8 9 10
6 7 3 6 9 3 1 5 2 4 6
Je veux transposer ce texte. Comme, je veux faire de lignes que de colonnes sna de colonnes que de lignes. Id-il un moyen de le faire en perl?
Merci à vous tous.
source d'informationauteur jerrygo
Vous devez vous connecter pour publier un commentaire.
Donc cette solution utilise un tableau de tableaux, chaque tableau imbriqué
est une ligne de données. Très simplement, vous en boucle sur les colonnes de chaque
ligne et de les pousser sur un autre tableau de tableaux à l'aide de la colonne
index l'index pour pousser la valeur sur. Cela a pour effet
de faire pivoter les données que vous avez demandé.
Il en résulte:
Voici une façon de transposer des données. De travail par le biais de cet exemple est instructif, car vous aurez besoin d'utiliser CPANvous apprendrez au sujet de la durée de
List::Util
etListe::MoreUtils
modules, vous apprendrez les bases des structures de données complexes (voir perlreftutperldscet perllol), et vous aurez à utiliser un itérateur en Perl.Il est certainement, et Mike a souligné la façon la plus simple. Si vous êtes en apprentissage, vous avez probablement vous souhaitez écrire votre propre fonction?
Tout d'abord, vous voulez split chaque ligne sur des espaces pour obtenir un tableau de valeurs (ou de pousser la liste de mots dans le tableau, comme dans De Dalton répondre; en Perl, il y a toujours plus d'une façon de faire n'importe quoi)
Ensuite, pour chaque élément dans le tableau, si vous voulez l'imprimer et de son homologue dans le second tableau, sur la même ligne. (Qu'allez-vous faire si un tableau s'écoule avant que l'autre?)
Bien sûr, si vous voulez apprendre le Perl, vous aurez certainement envie d'apprendre à utiliser CPAN ainsi, c'est donc toujours la peine d'essayer de l'aide de Données::Pivot.
Voici mon nouveau script de transposer un fichier délimité par des tabulations. Modifier \t pour votre délimiteur si vous le souhaitez.
ou 104 caractère "one liner" (avec apostrophe-barre oblique-saut de ligne-apostrophe ajoutée pour éviter le défilement horizontal):
https://metacpan.org/pod/List::UtilsBy#zip_by
comment à propos de la Matrice de Transposition de-0.06 ?
http://metacpan.org/pod/Array::Transpose
tableau doit être une matrice, j'.e des colonnes doit être égale pour chaque ligne du tableau d'origine sera détruit
ce code ne sera pas utiliser de mémoire supplémentaire pour les transposer, x2 pour les autres bibliothèques, pour le grand tableau pour exemple 100x1M, il importe