Absätze innerhalb einer Textdatei durchnummerieren

Guten Tag,
leider habe ich keine Ahnung von Programmieren. Ich brauche ein Programm, welches mir Absätze innerhalb einer Textdatei durchnummeriert. Die Nummer jedes Absatzes soll anschließend zu Beginn des Absatzes stehen. Die Textdatei beginnt mit einer Leerzeile und auch vor jedem neuen Absatz ist eine Leerzeile. Die Anzahl der Absätze variiert.

Bsp: Ist:
XXX XXXX XXXX XXXXXXXXX XXXXXXXX XXX XXXXXX
XXXX XXXXXX XXX XXXXX XXXXXX

XXXX XXX XXXX XXXX XXXX

Soll:

  1. XXX XXXX XXXX XXXXXXXXX XXXXXXXX XXX XXXXXX
    XXXX XXXXXX XXX XXXXX XXXXXX

  2. XXXX XXX XXXX XXXX XXXX

Vielen Dank im Voraus!

Hallo

Die Nummer jedes Absatzes soll anschließend
zu Beginn des Absatzes stehen. Die Textdatei beginnt mit einer
Leerzeile und auch vor jedem neuen Absatz ist eine Leerzeile.
Die Anzahl der Absätze variiert.

Ich hab mal schnell ein kleines Python Skript fabriziert. Um das zu starten musst du Python in der 3er Version http://www.python.org installiert haben.
Um deiner Textdatei Absatznummern hinzuzufügen startest du das Skript in einer Kommandozeile wie folgt:

absatznummerieren.py eingabe.txt ausgabe.txt

absatznummerieren.py ist der dateiname des Skripts.
eingabe.txt ersetzt du durch den Dateinamen jener Textdatei die Nummern erhalten soll, ausgabe.txt ist jene Datei in die der neue Inhalt mit Absatznummern geschrieben wird.

#VERWENDUNG absatznummerieren.py eingabe.txt ausgabe.txt
#Textfile muss mit Leerzeile beginnen, zwischen 2 Absätzen eine Leerzeile
import sys
input=open(sys.argv[1],"r")
output=open(sys.argv[2],"w")
absatznr=1
for line in input:
 if(len(line)==1):
 output.write(line)
 line=input.readline()
 output.write(str(absatznr) + ". ")
 absatznr=absatznr+1
 output.write(line)
input.close()
output.close()

Falls Fragen auftreten bin ich für dich da.
Liebe Grüße.
Alex

Hallo marsutop

leider habe ich keine Ahnung von Programmieren. Ich brauche
ein Programm, welches mir Absätze innerhalb einer Textdatei
durchnummeriert. Die Nummer jedes Absatzes soll anschließend
zu Beginn des Absatzes stehen. Die Textdatei beginnt mit einer
Leerzeile und auch vor jedem neuen Absatz ist eine Leerzeile.
Die Anzahl der Absätze variiert.

Nachdem Softwareschmied ein schönes Python-Programm
gebaut hat, kann ich natürlich mit Perl nicht
nachstehen :wink:

Leider läßt sich ein sinnvolles Perl-Programm nicht
angeben, weil man in Perl dazu kein Programm braucht.

Es reicht auf der Kommandozeile anzugeben:
(Windows)

C:\\> perl -i.bak -00 -pe "print qq{$.. }" text.txt

dann werden die Absätze in der Datei nummeriert,
die Originaldatei wird als .bak gesichert.

Grüße

CMБ

==> Perl/Win/32bit: http://downloads.activestate.com/ActivePerl/Windows/…

Hallo
Ich hab mal schnell ein kleines Python Skript fabriziert. Um
das zu starten musst du Python in der 3er Version
http://www.python.org installiert haben.
Um deiner Textdatei Absatznummern hinzuzufügen startest du das
Skript in einer Kommandozeile wie folgt:

absatznummerieren.py eingabe.txt ausgabe.txt

absatznummerieren.py ist der dateiname des Skripts.
eingabe.txt ersetzt du durch den Dateinamen jener Textdatei
die Nummern erhalten soll, ausgabe.txt ist jene Datei in die
der neue Inhalt mit Absatznummern geschrieben wird.

#VERWENDUNG absatznummerieren.py eingabe.txt ausgabe.txt
#Textfile muss mit Leerzeile beginnen, zwischen 2 Absätzen
eine Leerzeile
import sys
input=open(sys.argv[1],„r“)
output=open(sys.argv[2],„w“)
absatznr=1
for line in input:
if(len(line)==1):
output.write(line)
line=input.readline()
output.write(str(absatznr) + ". ")
absatznr=absatznr+1
output.write(line)
input.close()
output.close()

Falls Fragen auftreten bin ich für dich da.
Liebe Grüße.
Alex

Hallo Alex,
vielen Dank für deine Mühen. Leider klappt es noch nicht ganz. Beim Ausführen des Skripts tritt ein Fehler auf und es ergibt sich folgendes Bild:
>>> absatznummerieren.py 10-1.txt 10-1_num.txt
File „“, line 1
absatznummerieren.py 10-1.txt 10-1_num.txt
^
SyntaxError: invalid syntax

Da ich leider gar keine Erfahrungen habe, schilder ich dir noch kurz, wie ich nach der Installation vorgegangen bin. Vielleicht liegt ja dort bereits der Fehler.

  1. Im Startmenue IDLE (Python GUI) gestartet
  2. Dein Skript mit copy+paste eingefügt
  3. Das Ganze unter dem Namen absatznummerieren.py in dem Verzeichnis abgespeichert, wo sich auch die Datei python.exe befindet
  4. Textdatei „10-1.txt“ in das selbe Verzeichnis gelegt
  5. Im Startmenue Python (command line) gestartet und obigen Befehl eingegeben

Falls es Sinn macht, schicke ich dir gerne mal eine der Textdateien.

Viele Grüße,
Tobias

Hallo marsutop

Nachdem Softwareschmied ein schönes Python-Programm
gebaut hat, kann ich natürlich mit Perl nicht
nachstehen :wink:

Leider läßt sich ein sinnvolles Perl-Programm nicht
angeben, weil man in Perl dazu kein Programm braucht.

Es reicht auf der Kommandozeile anzugeben:
(Windows)

C:\> perl -i.bak -00 -pe „print qq{$… }“ text.txt

dann werden die Absätze in der Datei nummeriert,
die Originaldatei wird als .bak gesichert.

Grüße

CMБ

==> Perl/Win/32bit:
http://downloads.activestate.com/ActivePerl/Windows/…

Hallo CMБ,

auch dir vielen Dank für die Antwort. Leider komme ich auch mit deiner Hilfe nicht richtig weiter. Ich muss mich hier scheinbar als völliger noobie outen, denn ich habe noch nie etwas von Perl gehört. Habe auch das installiert und versucht mit deinem Befehl zu arbeiten. Im Startmenue finde ich dann aber nur etwas, was Perl Package Manager heißt. Heißt Kommandozeile (Windows), dass ich das in der Eingabeaufforderung eingeben muss?
Ich habe versucht, den Befehl auf meinen Fall anzupassen (Verzeichnis der Textdatei gewählt und anstatt „text.txt“ den Namen meiner Textdatei eingefügt), aber dann hieß es, dass der Befehl „perl“ nicht gefunden werden konnte…
Bin über jede weitere Hilfe sehr dankbar!
Tobias

Hallo

Habe auch das installiert und versucht
mit deinem Befehl zu arbeiten. Im Startmenue finde ich dann
aber nur etwas, was Perl Package Manager heißt. Heißt
Kommandozeile (Windows), dass ich das in der
Eingabeaufforderung eingeben muss?

Ja, Eingabeaufforderung im betreffenden
Verzeichnis öffnen (http://download.microsoft.com/download/whistler/Inst…)
und dann die Zeile eingeben.

Natürlich muß „perl“ im Pfad sein, also
im Pfad steht dann (u.a.) C:\PERL\BIN
oder sowas.

Ich habe versucht, den Befehl auf meinen Fall anzupassen
(Verzeichnis der Textdatei gewählt und anstatt „text.txt“ den
Namen meiner Textdatei eingefügt), aber dann hieß es, dass der
Befehl „perl“ nicht gefunden werden konnte…

s.o.

Möglicherweise hättest Du nach der Installation
nur Deinen Rechner neu starten müssen.

Grüße

CMБ

Ahhh! Es funktioniert! Vielen Dank noch mal!

Hallo Tobias.

  1. Das Ganze unter dem Namen absatznummerieren.py in dem
    Verzeichnis abgespeichert, wo sich auch die Datei :stuck_out_tongue:ython.exe befindet

Du kannst die Datei an einem beliebigen Ort abspeichern.

  1. Im Startmenue Python (command line) gestartet und obigen
    Befehl eingegeben

Hier liegt der Fehler. Du darfst nicht die Python Kommandozeile starten sondern die von Windows (cmd). Wechsle dann in das Verzeichnis wo du absatznummerieren.py und die Textdatei gespeichert hast und gib hier den Programmnamen und die textdateinamen so wie oben ein. Jetzt sollts funktionieren.
Herzliche Grüße.
Alex

Hallo Alex,

auch dir nochmals vielen vielen Dank! Klappt wunderbar!