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" .
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?
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/
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:
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.
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))
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))