Richtig Parsen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Richtig Parsen

11 Jul 2014, 06:48

Hallo zusammen,

ich habe hier eine Textdatei die ich Parsen will. Ich möchte diese gerne in Blöcke unterteilen.

Der Inhalt der Datei besteht aus solchen Elementen:
+KLIO650809000232000000","0000000695423",1.00,"UIHK+RR 1250856180","","","","Conni Maja","66089950","0997023788","DE82560596905109062546","","UUZ"
"56895471",09.07.14,"956236520701","PPPP+NOTPROVIDED","EINZELBUCHUNG","OOUU
*Daten geändert

Diese Blöcke sind alle ohne Umbruch aneinenader geklatscht im Textfile.

Ich dachte mir parse doch nach OOUU also Loop, parse, FileVar, "OOUU" aber in A_LoopField steht nicht der Teil vor dem OOUU.

Was mache ich denn falsch?

MfG
Rolf
garry
Posts: 3764
Joined: 22 Dec 2013, 12:50

Re: Richtig Parsen

11 Jul 2014, 07:50

ein Beispiel (Text gekürzt) , als delimiter $ benutzt , dies darf im Text nicht vorkommen

Code: Select all

f1=%a_scriptdir%\test.txt
ifnotexist,%f1%
  fileappend,"1PPPP+NOTPROVIDED"`,"EINZELBUCHUNG"`,"OOUU"`,"2PPPP+NOTPROVIDED"`,"EINZELBUCHUNG"`,"OOUU"`,"3PPPP+NOTPROVIDED"`,"EINZELBUCHUNG"`,"OOUU"`r`n,%f1%
fileread,a,%f1%
stringreplace,a,a,"OOUU"`,,"OOUU"`,$,all
Loop,parse,a,$,
  {
  x:=a_loopfield
  e .= x "`n"
  }
msgbox,%e%
e=
return
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Richtig Parsen

11 Jul 2014, 08:28

Die Kommandos Loop, Parse, ... und StringSplit, ... nehmen keine Zeichenfolgen als Begrenzer. Wenn Du mehrere Zeichen angibst, wird jedes von Ihnen als alternativer Begrenzer gewertet.

Die relativ neue Funktion StrSplit() kann dagegen mit Zeichenfolgen als Begrenzer umgehen.

Außerdem sieht Deine Datei wie klassisches CSV aus. Du könntest deshalb auch mit Loop, Parse, ..., CSV arbeiten, und immer dann einen Satz abschließen, wenn(A_LoopField = "OOUU") ist. Du verlierst dabei aber sowohl die Kommata als auch die Anführungszeichen.
User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: Richtig Parsen

11 Jul 2014, 09:08

Danke für euren Input!
Ich nehme StringReplace und baue mir so einen Endpunkt.
So kann ich auch den Datensatz auf Validität prüfen indem ich explizit nach dem immer gleichen Anfang und immer gleichen Ende suche per IfInString.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 15 guests