[GastForen Programmierung/Entwicklung AppleScript CSV-Datei Splitten

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

CSV-Datei Splitten

Gruiny
Beiträge gesamt: 2

11. Feb 2020, 19:14
Beitrag # 1 von 6
Bewertung:
(484 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen
Habe mal einwenig geggoglet und bin mir sicher das wenn mir hier jemand helfen kann.

Habe eine CSV-Datei mit diversen Zeilen in verschidenen Währungen und würde jetzt gerne diese Datei aufteilen / sortieren anhand einer Spalte die jeweils die Währung angiebt (EUR / CHF / USD) also das ich schlussendlich 3 CSV Dateien aus der einen Erhalte.
Daher das ich jeweils die 1 Zeile in jeder Datei und dann alle EUR in einer Datei alle CHF in einer usw.

des weiteren müsste ich in der einen Spalte die , aus dem Betrag ersetzen mit '

VIELEN DANK BEREITS für eure Hilfe
X

CSV-Datei Splitten

Hans Haesler
  
Beiträge gesamt: 5766

11. Feb 2020, 19:39
Beitrag # 2 von 6
Beitrag ID: #574041
Bewertung:
(475 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gruiny,

herzlich willkommen im AppleScript-Forum auf HilfDirSelbst! :-)

Würdest Du bitte eine Musterdatei zur Verfügung stellen? Irgendwo hochladen. Du kannst sie mir auch per E-Mail zustellen (die Adresse ist in meinem Profil).

Klar, ich könnte selber eine basteln. Aber mit Deiner Datei wäre sichergestellt, dass eine vorgeschlagene Lösung auch funktionieren wird.

Gruss, Hans


als Antwort auf: [#574039]

CSV-Datei Splitten

Hans Haesler
  
Beiträge gesamt: 5766

12. Feb 2020, 20:46
Beitrag # 3 von 6
Beitrag ID: #574071
Bewertung:
(412 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Abend Gruiny,

die erste Version des Scripts habe ich Dir per "WeTransfer" zugestellt.

Zum Gebrauch: Das Script kann ab Script-Editor gestartet werden.
Aber einfacher ist, es im Benutzer-Ordner "Scripts" unterzubringen, welcher sich in der Bibliothek befindet.
Dann kann das Script über das Script-Icon in der Menüleiste gestartet werden.

Es macht keinen grossen Sinn, den Code hier zu veröffentlichen, weil kaum jemand genau diese Anforderung hat.
Zudem müsste er über die Original-CSV-Datei verfügen, deren Inhalt vertraulich ist.

Nur soviel sei verraten: Sie enthält weltrekordverdächtige einundvierzig Spalten! :-)

Dennoch nachstehend eine Outline der Aktionen:
01. Der Anwender wird aufgefordert, eine CSV-Datei zu wählen.
02. Einer Variablen wird der Dateipfad zugewiesen.
03. Das Script prüft, ob es eine CSV-Datei ist: Endet der Pfad mit ".csv"?
04. Falls nicht, wird der Anwender informiert und die Ausführung abgebrochen.
05. Der Basispfad wird gespeichert (Dateipfad ohne ".csv").
06. Die CSV-Datei wird in eine Variable eingelesen, mit dem Zusatz 'as «class utf8»' (weil mit UTF-8 formatiert).
07. Die Kopfzeile wird gespeichert, damit sie in jeder neuen Datei eingefügt werden kann.
08. Drei separate Listen (für die drei Währungen) werden initialisiert, mit der Kopfzeile als erstes Element.
09. Der String der Absätze wird in eine Liste verwandelt, mithilfe des MS-DOS-Absatztrenners 'CRLF'.
10. Ein Schleife geht die Absätze durch; bei jedem wird geprüft, ob er "CHF", "EUR" oder "USD" enthält.
11. Je nach Fund wird der aktuelle Absatz der entsprechenden Liste angefügt.
12. Die drei Listen werden separat in Strings verwandelt.
13. Bei jedem String wird die Anzahl Absätze geprüft. Ist diese grösser als eins, wird der neue Pfad zusammengesetzt.
14. Für die Schweizer Franken, z.B., wird ganz einfach "_CHF.csv" an den Basispfad gehängt.
15. Der entsprechende String und der neue Pfad werden zum Handler 'writeFile()' gesandt.
16. Der String wird in die neue Datei geschrieben.
17. Dem Anwender wird der Dialog "Fertig." gezeigt, welcher nach zwei Sekunden entschwindet.

Die drei neuen Dateien werden im selben Order erzeugt, welcher die gewählte CSV-Datei enthält.
Am besten steckt man weitere Original-Dateien in einen eigenen Ordner, damit nichts überschrieben wird.

*****
Noch nicht gelöst ist das Ersetzen der Kommas durch Apostrophe (oder Punkte?).

Warum? Weil für die CSV-Datei vorsichtshalber das Komma als Trenner gewählt wurde (anstelle des üblichen Strichpunkts), können die Kommas der Summen nicht auf einfache Weise durch ein anderes Zeichen ersetzt werden.
Ich werde morgen versuchen, das Ersetzen mithilfe von GREP-Mustern zu schaffen. Mit JavaScript wäre das kein Problem. Aber das Basis-AppleScript ist nicht dafür gerüstet.

Gruss, Hans


als Antwort auf: [#574039]

CSV-Datei Splitten

Hans Haesler
  
Beiträge gesamt: 5766

14. Feb 2020, 08:05
Beitrag # 4 von 6
Beitrag ID: #574090
Bewertung:
(362 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

das Script funktionierte bei mir wie erwartet. Aber Gruiny gab eine Fehlermeldung durch. Ich versuchte erfolglos, dem Problem auf die Spur zu kommen.

Schliesslich machte ich drei kleine Testscripts, in der Hoffnung, etwas über die Ursache zu erfahren. Das Ergebnis ist erstaunlich. Dieselbe Datei wird bei Gruiny als Mac-formatiert erkannt, aber bei mir ist sie im MS-DOS-Format (= CRLF).

Ins gleiche Archiv mit den Testscripts – also bevor das Testergebnis bekannt war – steckte ich eine abgeänderte Version des Originals, in welcher das Erzeugen der Liste der Absätze (der Punkt 09. in der obigen Aufzählung) in zwei Schritten gemacht wird.

Und siehe da: Das vierte Script funktionierte bei Gruiny wie erwartet. Jetzt bleibt noch das Ersetzen des Dezimal-Trenner. Das hatte ich schon am Dienstag spätabends mithilfe der "RegexAndStuffLib" geschafft. Gruiny muss mir nur noch durchgeben, durch welches Zeichen das Komma ersetzt werden soll.

Gruss, Hans


als Antwort auf: [#574039]

CSV-Datei Splitten

Hans Haesler
  
Beiträge gesamt: 5766

14. Feb 2020, 22:06
Beitrag # 5 von 6
Beitrag ID: #574115
Bewertung:
(333 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

so ... die definitive Version des Scripts ist nun mit dem Suchen/Ersetzen mithilfe der RegEx-Bibliothek ausgestattet.
Gruiny hat es problemlos geschafft, diese Hilfsdatei am richtigen Ort unterzubringen. Und das Ersetzen der Dezimaltrenner Komma durch einen Punkt funktioniert wie gewünscht.

Weil das Suchen und Ersetzen eines Zeichens mit definierten GREP-Mustern von allgemeinem Interesse ist, nachfolgend die entsprechenden Zeilen:

Der Variablen 'tmpString' wird zu Beginn der Inhalt der gewählten CSV-Datei zugewiesen:

Code
# die CSV-Datei wählen lassen  
set csvPath to (choose file with prompt "Eine CSV-Datei auswählen:") as Unicode text

# die CSV-Datei in eine Variable einlesen
set tmpString to read file csvPath as «class utf8»

Und das braucht es, um die Kommas durch Punkte zu ersetzen:

Code
# das Suchen/Ersetzen vorbereiten 
use AppleScript version "2.7" --> macOS 10.13 oder neuer
use scripting additions
use script "RegexAndStuffLib" version "1.0.5" --> /Library/Script Libraries/RegexAndStuffLib.scptd

# die Suchen/Ersetzen-Muster
set searchPattern to "(\\d),(\\d\\d)"
set replaceTemplate to "$1.$2"

# die Dezimal-Trenner-Kommas durch Punkte ersetzen
set tmpString to regex change tmpString search pattern searchPattern replace template replaceTemplate

Das Suchen-Muster bedeutet: Finde eine beliebige Ziffer, gefolgt von einem Komma, gefolgt von zwei beliebigen Ziffern.
Die Klammern bilden die Gruppen eins und zwei.

Im Ersetzen-Muster stehen die beiden Dollarzeichen, gefolgt von der Nummer der Gruppe. Deren Inhalt wird unverändert übernommen. Dazwischen der Punkt, welcher das Komma ersetzen wird.

Gruss, Hans


als Antwort auf: [#574041]

CSV-Datei Splitten

Gruiny
Beiträge gesamt: 2

19. Feb 2020, 12:03
Beitrag # 6 von 6
Beitrag ID: #574193
Bewertung:
(189 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Vielen Vielen Dank an Hans!!!! Es ist genial das Script funktioniert perfekt!

Dieses Forum ist absolut der Hammer. Bin begeister wie schnell und einfach mir hier geholfen wurde.

Eine Spende wird noch folgen da solch ein Forum noch lange bestehen sollte!!!

Liebe grüsse


als Antwort auf: [#574115]
X
Hier Klicken

Aktuell

Diverses

| 14.02.2020

die-einstellungen_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
07.02.2020 - 11.09.2020

Digicomp Academy AG, 8005 Zürich
Freitag, 07. Feb. 2020, 13.00 Uhr - Freitag, 11. Sept. 2020, 12.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte. Mit dem Abschluss «Publisher Professional – Profil «Multimedia» verliehen durch die Digicomp Academy AG, bestätigen Sie Ihre Praxiserfahrungen und Qualifizierung in den genannten Themengebieten gegenüber Ihrem Arbeitgeber sowie Ihren Kunden.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Nein

Organisator: Digicomp Academy AG

Kontaktinformation: Isil Günalp, E-Mailisil.guenalp AT digicomp DOT ch

https://www.digicomp.ch/weiterbildung/software-anwendungs-trainings/adobe-trainings/publishing-lehrgaenge/lehrgang-publisher-professional-profil-multimedia

Veranstaltungen
22.02.2020 - 04.07.2020

Lehrgang zielgerichtet auf die Zertifizierung zum Publisher Basic

Schulungsraum PubliCollege, Kronenhalde 9d, 3400 Burgdorf
Samstag, 22. Feb. 2020, 13.14 Uhr - Samstag, 04. Juli 2020, 13.15 Uhr

Projektseminar/Lehrgang

Ziele In der Medienproduktion unter Einbezug der aktuellen Publishing-Programme mitarbeiten. Voraussetzungen Sie möchten gestalterisch tätig sein und eigene grafische Ideen kompetent entwickeln sowie umsetzen; Medienproduktionen professionell planen und ausführen. Kompetenzen Nach Abschluss dieses Lehrgangs können Sie Printpublikationen aller Art von der Gestaltung über die Umsetzung bis zu druckfertige PDFs erstellen. Sie sind fähig, CI/CD-Vorgaben umzusetzen. Sie lernen die Grundlagen der grafischen Gestaltung kennen und setzen diese mit Adobe Photoshop, InDesign und Illustrator effizient um.

15 Halbtage, jeweils am Samstag von 08.30 bis 14 Uhr im Kursraum des PubliCollege, 3400 Burgdorf


Daten
Samstag, 22.2., 29.2., 14.3., 21.3., 28.3., 4.4., 25.4., 2.5., 9.5., 16.5., 6.6., 13.6., 20.6., 27.6., 4.7. 2020
Reservedatum am 23.5. 2020

Ja

Organisator: PubliCollege GmbH, 3400 Burgdorf

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

https://www.publicollege.ch/kursangebote/20-publisher-basic

Hier Klicken