Seite 1 von 1
Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 09:41
von TryToLearn
Hi,
ich habe ein kleines Problem undzwar wir mir von einem anderen Programm eine Text-Datei erstellt, in dieser Datei ist ein Sonderzeichen belibig oft enthalten. Mein Ziel ist es zu erfahren wie oft dieses Sonderzeichen in diesem Dokument vorkommt.
Mein Problem ist es jedoch, dass ich nicht die Unicodenummer des Zeichens weiß und es auch nicht kopieren kann und daher keinen Anatz habe.
so in der Art sieht meine Text-Datei aus aber viele Tausend Zeilen lang (das Sonderzeichen ist ein anderes).
Sieht da irgendjemand eine Möglichkeit diese Zeichen zu zählen ?
Ich wäre für etwas Hilfe sehr dankbar.
Mit freundlichen Grüßen
TryToLearn
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 09:51
von TryToLearn
Also mein erster Ansatz ist so eine Konstelation.
Code: Alles auswählen
for line in obj:
try:
line.encode("UTF-8")
except UnicodeDecodeError:
count()
das funktioniert soweit auch aber ich denke da gibt es eine bessere Möglichkeit.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 09:54
von BlackJack
@TryToLearn: Erst mal die offensichtliche Frage: Wieso kannst Du das Zeichen nicht kopieren?
Ansonsten kannst Du die Datei doch einfach als Binärdatei öffnen und zum Beispiel die Bytewerte als Zahlen darstellen lassen. Also beispielsweise einen klassischen Hexdump erstellen. Dann siehst Du welche(n) Bytewert(e) dieses Zeichen in der Datei hat. Wenn man kein entsprechendes Programm zur Hand hat, wie zum Beispiel einen Hexeditor, lässt sich das ja auch leicht selber programmieren.
Edit: Wenn man sich Deinen Beispieltext mal nimmt und als UTF-8 speichert, dann sehen die Bytewerte wie folgt aus:
Code: Alles auswählen
bj@god:~$ cat test.txt
†
bla bla bal
bla bla bal
†
†
2
bj@god:~$ hd test.txt
00000000 20 0a e2 80 a0 0a 62 6c 61 20 62 6c 61 20 62 61 | .....bla bla ba|
00000010 6c 0a 62 6c 61 20 62 6c 61 20 62 61 6c 0a e2 80 |l.bla bla bal...|
00000020 a0 0a e2 80 a0 0a 32 0a |......2.|
00000028
Man sieht also dass das Zeichen mit der Bytefolge 0xe2 0x80 kodiert ist.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:02
von TryToLearn
Das weiß ich leider auch nicht....
hier hab ich mal ein Bild in dem man das zeichen sieht

Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:03
von snafu
Code: Alles auswählen
>>> text="""
... †
... bla bla bal
... bla bla bal
... †
... †
... """
>>> text.count('†')
3
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:05
von TryToLearn
das habe ich schon ausprobiert mein Problem ist ja dass ich das Zeichen nicht darstellen kann
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:19
von Sirius3
@TryToLearn: Zum ersten hast Du ja gar keine UTF-8 kodierte Datei, weshalb Du ja dann einen Decoding-Error bekommst.
Mit einem einfachen "print line" erhältst Du ja schon das Zeichen als Hex-Escape geliefert. Damit ist es kein Problem, an das Zeichen zu kommen.
PS: wahrscheinlich handelt es sich um das FormFeed-Zeichen.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:28
von /me
TryToLearn hat geschrieben:hier hab ich mal ein Bild in dem man das zeichen sieht
Das sieht aus wie ein Ankh (☥) mit Unicode-Codepoint U+2625.
Ich habe damit übrigens keine Copy&Paste-Probleme.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:37
von TryToLearn
@/me: leider ist es nicht dieses Zeichen.
@Sirius3: Also ich habe die Text-Datei einam aus UTF-8 codierte Datei und einmal als ANSI codierte Datei.
Ich verstehe jdeoch noch nicht ganz wie du das meinst, dass ich das Zeichen als Hex-Escape bekomme.
Nein es handelt sich leider nicht um das FormFeed-Zeichen.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:51
von Hyperion
BlackJack hat Dir schon gezeigt, *wie* man an das Zeichen kommen kann
Wo liegt also noch das Problem?
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 10:56
von TryToLearn
ok in dem Fall mal von ganz vorne.
Ich habe ein pdf-Dokument mit knapp 1000 Seiten.
Dieses Dokument wandle ich mit der in dem Projekt xpdf enthaltenen Anwendung pdftotext in eine Text-Datei.
Diese Text-Datei durchsuche ich nach einem einmaligen key und verwerfe alles was nach dem key kommt.
pdftotext fügt nach jeder Seite dieses besondere Sonderzeichen ein die ich zählen möchte um die Seitenzahl herauszufinden, auf der sich der key befindet.
@Sirius3: Dieser Vorschlag kam einmal von dir. Meine bisherige Lösung funktioniert auf einer neuen Umgebung nichtmehr ganz wie erwünscht deshalb greife ich auf deinen Vorschlag zurück.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 11:25
von Hyperion
Ja und? Auch nach deiner Komplettschilderung kann man nur sagen: BlackJack hat Dir schon gesagt, wie man an das Zeichen kommt! (Und damit kannst Du dann ja auch Deine Suchen durchführen)
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 11:38
von BlackJack
Nach der Beschreibung mit ``xpdf`` bin ich mir auch fast sicher dass es sich um das „form feed”-Zeichen handelt wie Sirius3 ja schon vermutet hat, denn das würde sehr viel Sinn machen das nach jeder Seite einzufügen.
Edit: Macht nicht nur Sinn sondern steht auch in der Dokumentation zu ``pdftotext`` aus dem ``xpdf``-Paket.
Edit2: Und Du wirst nicht glauben wie dieses Zeichen unter DOS mit dem VGA-Zeichensatz angezeigt wird: ♀
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 12:35
von TryToLearn
Ersteinmal viel Dank für die Hilfe!
Wenn ich jetzt hingehe
dann bekomme ich 0.
Bei allem anderen was ich versuche bkomme ich immer diesen Fehler
Code: Alles auswählen
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 527: ordinal not in range(128)
Es tut mir leid wenn ich euch langweile bzw. durch meine Unwissenheit nerve aber ich bin numal noch in der Lernphase.
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 12:41
von cofi
Das Zeichen ist ja auch kein Form Feed, sondern entspricht nur der Darstellung des Form Feeds im VGA Zeichensatz.
Du willst aber den Form Feed und dementsprechend
Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 12:42
von Hyperion
Wenn Du ``print`` benutzt, kommt es einfach darauf an, ob die Shell die Zeichen überhaupt darstellen kann! Wenn Du unter Windows arbeitest, könnte das in einer Powershell klappen; die kann iirc UTF-8. Ansonsten wirst Du logischer Weise nie ein Zeichen sehen, welches die Shell nicht darstellen kann!
Alternativ kannst Du das aber in eine Datei schreiben (eben utf-8 codiert) und diese mit einem Editor öffnen, der UTF-8 Zeichen darstellen kann.
Der ``DecodeError`` kommt dann zustande, wenn Du (explizit oder *implizit*) einen Unicode-String in einen Bytestring codierst und dabei kein Encoding angibst oder eben das ``ASCII``-Encoding. Oftmals ist das *implizite* (z.B. durch ``print`` eines Unicode-Strings oder dem konkatenieren zwischen Unicode- und Bytestrings) das Problem. Du hast eben Zeichen darin, die *nicht* in ASCII darstellbar sind. Daher kracht der Versuch natürlich...
Zu den ganzen Zusammenhängen zwischen Encoding und Unicode schau Dir mal meine Signatur an

Re: Sonderzeichen in Text-Datei zählen
Verfasst: Dienstag 2. September 2014, 12:49
von TryToLearn
@cofi: Vielen vielen Danke das funktioniert super.
@Hyperion: Danke das ganze schau ich mir nochmal genauer an.
Und nochmal an alle danke für die Hilfe