J'ai un fichier texte de structure de type table, chaque ligne contient 0 à 4 mots divisés par nombre arbitraire d'espaces. mon objectif est de modifier ce fichier dans un format où Les éléments commencent à la même position d'une même position, par exemple: p> Le nombre d'espaces est arbitraire. Je préfère les lignes commençant par un espace saute le premier élément, mais ce n'est pas strict. P> Je pense qu'il y a beaucoup de façons de le faire, mon ordre de préférence est: p> Comme il s'agit d'une partie du processus de préparation de données / validation, je n'ai pas besoin d'une méthode parfaite; Je vais effectuer une vérification manuelle après tout. Je cherche une façon qui fait, disons, 80 à 90% du travail. P> Quelqu'un peut-il suggérer une approche efficace? P> Si vous êtes utile, exemple de fichier est ici . p> p>
3 Réponses :
Voici un moyen d'obtenir colonne code> pour respecter les principaux espaces: modifier un espace de tête à un autre caractère hello world this is
an example file
is there a good
way to clean this
your help is
highly appreciated
Module La largeur de la colonne est basée sur le Longueur de la chaîne la plus longue non-whitespace de votre fichier + Vous pouvez jouer avec Si vous passez dans sortie: p> RE code> de Python, .format () code> offre une bonne approche du 4. code>. colonne_pad code> Valeur. p> colonne_pad code> pour faire varier la largeur de la colonne. < / P> renommé_file = true code>, vous obtiendrez un nouveau fichier nommé 'nettoyé_
Vous pouvez utiliser le https://github.com/junegunn/vim-asy-align plugin pour aligner divers délimiteurs p>
Sélectionnez simplement les lignes, appuyez sur: P>
code>: plan vers (easyalign) code> li>
-
code>: Aperçu en direct, facultatif li>
-
* code>: alignement tous les délimiteurs li>
-
code>: Basculer jusqu'à ce que cela puisse aligner les délimiteurs li>
-
\ s \ @ <= \ s \ + code>: Sélectionnez Non-espace après l'espace comme Délimiteur Li>
ul>
ou utilisez la commande:
'<,'> easyalign * / \ s \ @ <= \ s \ + / dl code> p>
Merci pour une solution VIM. Je vais essayer cela.
Column -t Fichier CODE> (ou:%! Colonne -T CODE> à partir de Vim) fait ce que vous voulez, à l'exception du "droit aligné" (c.-à-d. Remplir d'abord de l'espace) . Je ne connais pas de manière facile / directe de faire cette dernière partie.@Marth c'est très utile.