web-dev-qa-db-fra.com

Comment aligner verticalement des valeurs séparées par des virgules dans Notepad ++?

Comme le montre l'image "Avant" ci-dessous, chaque colonne séparée par une virgule n'est pas alignée correctement. Existe-t-il une méthode pour aligner chaque colonne verticalement, comme pour l'effet d'affichage dans Excel? 

L'effet que je souhaite apparaît dans l'image "Après" .  Before  After

Grâce à @Martin S, je peux aligner le fichier comme l’image "Method_1". Comme il l'a mentionné, certains personnages ne peuvent toujours pas bien s'aligner. Je me demandais si cette méthode pourrait être améliorée?  Method_1

3
T X

Vous pouvez utiliser le plugin TextFX: Édition> Aligner plusieurs lignes de ...

Remarque: cela ne fonctionne pas si le fichier est en lecture seule.

http://tomaslind.net/2016/02/18/how-to-align-columns-in-notepad/

10
Pedro Reis

Vous pouvez utiliser Search & Replace pour remplacer toutes les occurrences de , par ,\t. Cela ajoutera un onglet après chaque ,.

Cette méthode présente cependant certains inconvénients:

  1. vous ajoutez effectivement des caractères d'espacement dans votre document (au cas où vous auriez besoin de le modifier et de le sauvegarder).
  2. Cela ne fonctionne bien que si la différence (en termes de nombre de caractères) entre les nombres les plus longs et les plus courts est inférieure à une taille de tabulation (généralement 4 caractères).
2
Martin S

Vous pouvez utiliser ce script de plug-in python qui utilise la bibliothèque csv qui prend en charge csv cité et de nombreuses autres variantes. 

Installer:

  1. Utilisez le gestionnaire de plug-in de Notepad ++ pour installer le plug-in "Script Python".
  2. Plugins-> Script Python-> New Script (appelez-le comme CSVtoTable.py)
  3. Collez le script python suivant dans le nouveau fichier et enregistrez:

CSVtoTable.py

import csv

inputlines = editor.getText().split('\n')
# Get rid of empty lines
inputlines = [line.strip() for line in inputlines if line.strip()]
reader = csv.reader(inputlines, delimiter=',')
csvlist = [line for line in reader]
# transpose to calculate the column widths and create a format string which left aligns each row
t_csvlist = Zip(*csvlist)
col_widths = [max([len(x) for x in t_csvlist[y]]) for y in range(len(t_csvlist))]
# To right align - change < to >
fmt_str = ' '.join(['{{:<{0}}}'.format(x) for x in col_widths]) + '\r\n'

text = []
for line in csvlist: 
    text.append(fmt_str.format(*line))

# open a new document and put the results in there.    
notepad.new()
editor.addText(''.join(text))
  1. Ouvrez votre fichier CSV dans Notepad ++
  2. Cliquez sur Plugins-> Script Python-> Scripts -> (Le nom que vous avez utilisé à l'étape 2)
  3. Un nouvel onglet avec les données formatées devrait s'ouvrir.

Mise à jour (chiffres alignés à droite et chaînes alignées à gauche):

Utilisez le script python suivant si vous souhaitez aligner à droite les champs de numéro du fichier CSV. Il examine la deuxième ligne du fichier csv pour déterminer le type des champs.

import csv
import re

num_re = re.compile('[-\+]?\d+(\.\d+)?')

inputlines = editor.getText().split('\n')
# Get rid of empty lines
inputlines = [line.strip() for line in inputlines if line.strip()]
reader = csv.reader(inputlines, delimiter=',')
csvlist = [line for line in reader]

# Transpose to calculate the column widths and create a format string which left aligns each row
t_csvlist = Zip(*csvlist)
col_widths = [max([len(x) for x in t_csvlist[y]]) for y in range(len(t_csvlist))]

# Numbers get right aligned
type_eval_line = csvlist[1 if len(csvlist)>1 else 0]
alignment = ['>' if num_re.match(item) else '<' for item in type_eval_line]

# Compute the format string
fmt_str = ' '.join(['{{:{0}{1}}}'.format(a,x) for x,a in Zip(col_widths,alignment)]) + '\r\n'

text = []
for line in csvlist: 
    text.append(fmt_str.format(*line))

# open a new document and put the results in there.    
notepad.new()
editor.addText(''.join(text))
0
zerokelvin