Zeilenattribute in einer Textdatei effektiv vertauschen, wie?
Folgendes:
Ich hab ein (recht großes) Json/Textfile, was jeweils nach folgendem Schema aufgebaut ist:
"Text1","Text2","Text3","Text4","Text5","Text6"
"Text1","Text2","Text3","Text4","Text5","Text6"
"Text1","Text2","Text3","Text4","Text5","Text6"
"Text1","Text2","Text3","Text4","Text5","Text6"
......
Wobei die Datei (mit ein paar kleinen Fehlern) zu 99,9% von Anfang bis Ende so aussieht.
Es gibt hierbei keine regulären Strings mit {} oder : sondern nur die "... "
getrennt durch ,
Was ich nun gerne machen würde ist *lediglich* jeden " " oder , eine Nummer zuzuordnen um dann diese Textblöcke pro Zeile in der Reihenfolge zu verändern.
Also aus:
"Text1","Text2","Text3","Text4","Text5","Text6" soll
"Text4","Text1",Text2","Text3","Text5","Text6" werden.
Wichtig wäre es bestimmte Textblöcke die sich innerhalb ," ", befinden zu erkennen und an den Anfang einer Zeile zu verschieben.
Ausserdem suche ich einen Befehl mit dem sich je der erste Buchstabe einer Zeile entfernen lässt. (also so wie die Ersetzen Funktion aber auf den ersten bzw. einen definierbaren Buchstaben beschränkt)
Geht sowas per Konsole oder gibt es in Notepad+ zufällig einen Befehl der sowas kann?
1 Antwort
Ich sehe nicht, was das mit JSON zu tun hat. Das sieht doch wie CSV aus.
Man kann sowas mit regulären Ausdrücken und Suchen/Ersetzen (in beliebigem Editor) oder mit Tools wie sed zaubern, was ich aber in diesem Fall eher zu umständlich finde. Diese Regexes werden schnell unübersichtlich. Außerdem willst du hier offenbar noch Bedingungen in die Logik bringen...da kommt man eigentlich nur mit einem kleinen Programm sinnvoll weiter.
Hier ein Grundgerüst in Python, das deine Spaltenvertauschung ohne Bedingungen durchführt. Ich gehe davon aus, dass es wirklich CSV ist bzw. sein soll.
import csv, sys
with open('/tmp/test.txt') as infile:
csvreader = csv.reader(infile)
csvwriter = csv.writer(sys.stdout)
for row in csvreader:
if row:
row[0], row[3] = row[3], row[0]
csvwriter.writerow(row)
Wenn deine Datei so aussieht:
"Text1","Text2","Text3","Text4","Text5","Text6"
"Text1","Text2","Text3","Text4","Text5","Text6"
...ist das garantiert kein gültiges JSON. Bestenfalls JSON-Fragmente.
Dieses row müsste noch irgendwie näher definiert werden?
Der CSV-Reader kümmert sich drum. Natürlich kann man die Zeilen auch naiv als Text einlesen und am Komma splitten, das wird dann aber scheitern, wenn in den Strings Kommata zu finden sind.
Es ist json aber kann es ja in csv umwandeln. Dieses row müsste noch irgendwie näher definiert werden? Oder erkennt "row" bereits die ,"...",Struktur? (sorry in Python bin ich totaler Anfänger)