it-swarm.com.de

Wie werden kommagetrennte Werte in Notepad ++ vertikal ausgerichtet?

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. Before  After

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?  Method_1

3
T X

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/

10
Pedro Reis

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:

  1. sie fügen Ihrem Dokument effektiv Leerzeichen hinzu (falls Sie es bearbeiten und speichern müssen).
  2. Dies funktioniert nur dann gut, wenn die Differenz (in Bezug auf die Anzahl der Zeichen) zwischen der längsten und der kürzesten Zahl weniger als 1 Tabulatorgröße (normalerweise 4 Zeichen) beträgt.
2
Martin S

Sie können dieses Python-Plugin-Skript verwenden, das die csv-Bibliothek verwendet, die sich mit zitierten csv und vielen anderen Varianten befasst. 

Konfiguration:

  1. Verwenden Sie den Plugin-Manager in Notepad ++, um das Plugin "Python-Skript" zu installieren.
  2. Plugins-> Python Script-> New Script (nennen Sie es CSVtoTable.py)
  3. Fügen Sie das folgende Python-Skript in die neue Datei ein und speichern Sie es:

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. Öffnen Sie Ihre CSV-Datei in Notepad ++
  2. Klicken Sie auf Plugins-> Python Script-> Scripts -> (der Name, den Sie in Schritt 2 verwendet haben).
  3. Eine neue Registerkarte mit den formatierten Daten sollte geöffnet werden.

Update (rechtsbündige Zahlen & linksbündige Zeichenfolgen):

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))
0
zerokelvin