[GastForen Programmierung/Entwicklung AppleScript CSV-Datei Splitten

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

CSV-Datei Splitten

Gruiny
Beiträge gesamt: 6

11. Feb 2020, 19:14
Beitrag # 1 von 6
Bewertung:
(26197 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: 5812

11. Feb 2020, 19:39
Beitrag # 2 von 6
Beitrag ID: #574041
Bewertung:
(26186 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: 5812

12. Feb 2020, 20:46
Beitrag # 3 von 6
Beitrag ID: #574071
Bewertung:
(26123 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: 5812

14. Feb 2020, 08:05
Beitrag # 4 von 6
Beitrag ID: #574090
Bewertung:
(26073 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: 5812

14. Feb 2020, 22:06
Beitrag # 5 von 6
Beitrag ID: #574115
Bewertung:
(26044 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: 6

19. Feb 2020, 12:03
Beitrag # 6 von 6
Beitrag ID: #574193
Bewertung:
(25900 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

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
14.02.2022

Zürich, Online
Montag, 14. Feb. 2022, 07.30 - 18.00 Uhr

Word Press / Digitalisierung / Selbständigkeit

Digitalisierung und KMU's in der Schweiz Leistungsfähig im Zeitalter der Digitalisierung Machine Learning Künstliche Intelligenz CRM Change Management Kommunikation im Betrieb Kommunikation digitale Medien Digitale Vertriebsmodelle

Ja

Organisator: B. Isik

Kontaktinformation: B. Isik / Daniela Lovric, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/website-mit-wix-erstellen/

Veranstaltungen
01.03.2022 - 03.03.2022

Online
Dienstag, 01. März 2022, 10.00 Uhr - Donnerstag, 03. März 2022, 11.30 Uhr

Workshop-Reihe

Sie wollen barrierefreie PDF-Dokumente mit möglichst wenig Aufwand erstellen? Mit ein wenig Grundlagenwissen können Sie dies aus InDesign mit axaio MadeToTag erreichen – ohne manuelle Nacharbeit im PDF! In diesem 3-teiligen, interaktiven Workshop, den wir vom 1. – 3. März 2022 organisieren, lernen die Teilnehmenden, wie sie zielführend beim Erstellen von barrierefreien PDF-Dokumenten aus Adobe InDesign vorgehen. Dafür wird zu Beginn vermittelt, was ein barrierefreies PDF ist, und welche Anforderungen an solche Dokumente bestehen. Mit diesem Wissen werden, anhand von Best-Practice-Beispielen, Strategien zum effizienten Erstellen von PDF/UA-konformen Dokumenten und Formularen mit Adobe InDesign und axaio MadeToTag gezeigt. Außerdem werden Lösungen für klassische Probleme vermittelt. Die Teilnehmenden erhalten im Vorfeld eine Liste der notwendigen Software, wie auch vorbereitete Workshop-Daten, an denen alle im Workshop unter Anleitung arbeiten. Während des Workshops haben die Teilnehmenden die Möglichkeit, Fragen zu stellen.

Die Webinar-Serie besteht aus drei Teilen, an drei verschiedenen Terminen, die aufeinander aufbauen: 1.-3. März 2022, jeweils von 10.00-11.30 Uhr, mit anschliessender 20-minütiger Diskussionsrunde.
Teilnahmegebühr: 89,- EUR (zzgl. MwSt).

Ja

Organisator: axaio software

Kontaktinformation: Karina Zander, E-Mailk.zander AT axaio DOT com

https://www.axaio.com/doku.php/de:news:interaktive-webinar-serie

Barrierefreie PDF-Dokumente erstellen mit Adobe InDesign & axaio MadeToTag