Python für eine Datei eine Zeichen-Statistik erstellen-also welche Zeichen kommen vor und wie oft?
Output etwa so:
( 32) - 2825
1( 49) - 2788
.( 46) - 2756
[......]
y(121) - 229
8( 56) - 229
:( 58) - 204
[......]
|(124) - 1
>( 62) - 1
_( 95) - 1
Der Datei Name ist inv_debian95 und enthällt zufällig generierte Zahlen, Zeichen und Buchstaben.
Mein Code bis jetzt:
#! /usr/bin/env python3
# -*- coding: utf-8 -
fn = r"C:\Users\#Mein Name\Desktop\inv_debian95.txt"
with open(fn, "rt") as fl:
counter = 0
zeichen = "a"
for ln in fl:
for c in ln:
if zeichen == c:
counter = counter + 1
print(counter)
Der gibt jetzt nur die Anzahl für den Buchstaben a aus aber ich will ja das alle Buchstaben, Zahlen und Zeichen ausgegeben werden, wie mache ich das?
3 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren, Python
import collections
fn = r"C:\Users\#Mein Name\Desktop\inv_debian95.txt"
with open(fn, "rt") as fl:
hist=collections.Counter(fl.read())
Noch als Nachtrag:
for char, count in sorted(hist.items()):
print(....) # pretty print histogram
# use ord(char) for char's ordinal value
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren, Python
Du brauchst also etwas, das jedem gefundenen Zeichen eine Zahl zuordnet. Und dafür gibt's natürlich einen Datentyp: das Dictionary.
Du kannst dir aber auch das Leben mit der Counter-Klasse vereinfachen.
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Python
Ich würde das ganze so angehen:
- erstelle ein Dict
- iteriere über jedes Zeichen des Strings
- Ist das Zeichen noch nicht als Key im Dict erhalten, füge es hinzu und setze den Wert auf 1
- Ist das Zeichen im Dict, erhöhe den Wert um 1