Python 3.4

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dionis
User
Beiträge: 2
Registriert: Dienstag 21. Oktober 2014, 15:04

Dateiname: split.py
Einlesen vom Inputfile. Standardfilename ist input.txt. Wenn das Programm mit 2 Argumenten gestartet wrid, soll das 1. Argument als Inputfilename verwendet werden.
Aufteilung des Textes in max. 160 Zeichen.
Keine Wörter trennen
Nach jeder SMS eine Trennline von 60 Bindestrichen einfügen
Nach der letzten SMS folgt zwar eine Trennlinie aber KEINE Newline
Schreiben des gesplitteten Textes in EIN Textfile. Der Name ist das 2. Argument bzw. output.txt, wenn keine Argumente mitgegeben werden.
Euer Programm muss nicht nur mit den bereitgestellten Testfile zurecht kommen, es muss auch andere Nachrichten splitten können. Schreibt euch deshalb unbedingt eigene Testcases. Diese könnt ihr gerne untereinander austauschen
Es werden keine Inputs mit CRLF vorkommen. In der Nachricht können zwar Newlines vorkommen, diese sind dann aber ausschließlich mit LF getrennt.
Fileformat ist ausschießlich UTF-8
Es wird in den Nachrichten keine Wörter geben die länger als 151 Zeichen sind damit sich zumindest in jedem SMS ein ganzes Wort ausgeht (151 Zeichen Wort + Zeichen für Counter = 160 Zeichen).
UPDATE: Es können natürlich auch mehrere Whitespaces hintereinander im Text stehen und es kann auch Newline (\n) und Tabulator (\t) mitten im Text vorkommen. Diese Zeichen sollen alle erhalten bleiben, damit beim Zusammenführen wieder die originale Nachricht herauskommt.
UPDATE: Die Nachricht kann auch leer sein. Das Splitten würde dann ein SMS mit (0/160) und eine Trennzeile produzieren.
UPDATE: Das Programm soll alle Exceptions abfangen. Falls also bei der Ausführung Fehler auftreten, sollen diese abgefangen und das Programm dann beendet werden (zB mit sys.exit()).
UPDATE: Ausgaben auf der Konsole sind erlaubt und werden nicht getestet.
Beispiel
Input-Text
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
Output-Text
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam (146/160)
------------------------------------------------------------
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. (150/160)
------------------------------------------------------------
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam (146/160)
------------------------------------------------------------
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. (150/160)
------------------------------------------------------------
Lorem ipsum dolor sit amet.(27/160)


Ich habe Zeit bis 18 uhr ......................... Bitte :K :K :K
BlackJack

@dionis: Ist zeitlich vielleicht ein wenig knapp. Ein Kollege von Dir hat offenbar schon am Samstag angefangen.

Wie sieht denn Dein Ansatz aus?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

dionis hat geschrieben:UPDATE: Es können natürlich auch mehrere Whitespaces hintereinander im Text stehen und es kann auch Newline (\n) und Tabulator (\t) mitten im Text vorkommen. Diese Zeichen sollen alle erhalten bleiben, damit beim Zusammenführen wieder die originale Nachricht herauskommt.
Wenn jede Zeile der Eingabedatei eine zu verarbeitende SMS darstellt, wie soll denn dann ein "\n" im Text erkannt werden?
dionis
User
Beiträge: 2
Registriert: Dienstag 21. Oktober 2014, 15:04

Keine Ahnung (Nachdem 70 charakter kommt Newline glaube ich )
BlackJack

@/me: Die *Eingabedatei* enthält keine SMS. Die Ausgabedatei enthält SMSen durch '-' * 60 getrennt. Wo liest Du das da nur eine Zeile pro SMS erlaubt ist? Das sieht beim Beispiel zufällig so aus, da kommen halt keine Zeilenumbrüche vor.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Ah, jetzt habe ich es verstanden. Vielleicht hätte der Fragesteller die ihm gegebene Aufgabe sinnvoll in eigenen Worten erläutern sollen statt sie einfach (inkl. Updates) hierhin zu kopieren.
Antworten