Wie in der Abbildung "Before" unten gezeigt, ist jede durch Komma getrennte Spalte nicht dauerhaft ausgerichtet. Gibt es eine Methode, um jede Spalte vertikal wie der Anzeigeeffekt in Excel auszurichten?
Der gewünschte Effekt ist im Bild "After" . zu sehen.
Dank @Martin S kann ich die Datei wie im Bild "Method_1" ausrichten. Wie er bereits erwähnt hat, können sich einige Charaktere immer noch nicht gut ausrichten. Ich habe mich gefragt, ob diese Methode verbessert werden kann?
Sie können das TextFX-Plugin verwenden: Bearbeiten> Mehrere Zeilen ausrichten nach ...
Hinweis: Dies funktioniert nicht, wenn die Datei schreibgeschützt ist.
http://tomaslind.net/2016/02/18/how-to-align-columns-in-notepad/
Sie können Search & Replace verwenden, um alle Vorkommen von ,
in ,\t
zu ändern. Dadurch wird nach jedem ,
eine Registerkarte hinzugefügt.
Diese Methode hat jedoch einige Nachteile:
Sie können dieses Python-Plugin-Skript verwenden, das die csv-Bibliothek verwendet, die sich mit zitierten csv und vielen anderen Varianten befasst.
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))
Verwenden Sie das folgende Python-Skript, wenn Sie Zahlenfelder von der CSV-Datei aus rechts ausrichten möchten. In der zweiten Zeile der CSV-Datei werden die Feldtypen ermittelt.
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))