ubuntuusers.de

Buchstabenzähler

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

anonymos

Avatar von anonymos

Anmeldungsdatum:
5. November 2009

Beiträge: 18

Hallo zusammen

Ich bin hier neu und habe gleich mal eine Frage. Ich wollte wissen wie ich von einer TXT-Datei den Inhalt einlesen kann und dann eine Liste bekomme wie oft jeder Buchstabe in diesem Text vorkommt.

z.B. A 23 B 15 etc.

lg anonymos

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Eine Programmiersprache kennst Du nicht?

Ist die Unterscheidung Groß-Kleinschreibung von Interesse? Willst Du Umlaute zählen? Satzzeichen, Blank, Klammern, Ziffern?

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Für die Kleinbuchstaben a-z:

for c in {a..z}; do echo -n $c": "; cat file | tr -d '\n' | sed 's/[^'$c']//g' | wc -c; done 

Greebo

Avatar von Greebo

Anmeldungsdatum:
21. November 2006

Beiträge: 3443

Wohnort: 97070 Würzburg

Etwas schneller ist

for c in {a..z}; do echo -n $c": "; cat pw.txt | grep -c $c; done

Falls unabhängig von der Großschreibung gezählt werden soll, bietet sich auch ein

for c in {a..z}; do echo -n $c": "; cat pw.txt |  grep -ic $c; done

an.

anonymos

(Themenstarter)
Avatar von anonymos

Anmeldungsdatum:
5. November 2009

Beiträge: 18

Also es soll alle Buchstaben z.B. egal ob grosses A oder kleines a zählen und dann irgendwo "auflisten"

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Folgendes Python-Skript zählt das Vorkommen aller Buchstaben der Standardeingabe und gibt die Buchstaben anschließend nach Häufigkeit sortiert aus. Sämtliche Varianten von Leerzeichen werden ignoriert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
# -*- coding: utf-8 -*-


from __future__ import print_function, division, unicode_literals

import sys
from pprint import pprint
from collections import defaultdict
from operator import itemgetter

def main():
    character_count = defaultdict(lambda: 0)
    content = sys.stdin.read()
    content = content.decode(
        sys.stdin.encoding or sys.getfilesystemencoding())
    for character in content:
        character_count[character] += 1

    items = sorted(character_count.items(), key=itemgetter(1))
    for character, count in items:
        if character.isspace():
            continue
        print('{0}: {1:>3}'.format(character, count).encode(
            sys.stdout.encoding or sys.getfilesystemencoding()))

if __name__ == '__main__':
    main()

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Greebo schrieb:

Etwas schneller ist

for c in {a..z}; do echo -n $c": "; cat pw.txt | grep -c $c; done

Noch schneller ist "echo A:50" und genauso falsch.

grep -c zählt die Zeilen, in denen der Buchstabe vorkommt.

anonymos Die anderen Fragen willst Du dann so nach und nach beantworten?

for c in {a..z}; do echo -n $c": "; cat test | tr -d '\n' | sed 'y/A-Z/a-z/;s/[^'$c']//g' | wc -c; done

anonymos

(Themenstarter)
Avatar von anonymos

Anmeldungsdatum:
5. November 2009

Beiträge: 18

Lunar schrieb:

Folgendes Python-Skript zählt das Vorkommen aller Buchstaben der Standardeingabe und gibt die Buchstaben anschließend nach Häufigkeit sortiert aus. Sämtliche Varianten von Leerzeichen werden ignoriert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
# -*- coding: utf-8 -*-


from __future__ import print_function, division, unicode_literals

import sys
from pprint import pprint
from collections import defaultdict
from operator import itemgetter

def main():
    character_count = defaultdict(lambda: 0)
    content = sys.stdin.read()
    content = content.decode(
        sys.stdin.encoding or sys.getfilesystemencoding())
    for character in content:
        character_count[character] += 1

    items = sorted(character_count.items(), key=itemgetter(1))
    for character, count in items:
        if character.isspace():
            continue
        print('{0}: {1:>3}'.format(character, count).encode(
            sys.stdout.encoding or sys.getfilesystemencoding()))

if __name__ == '__main__':
    main()

Hallo lunar

Dein Script sieht super aus aber leider verstehe ich relativ wenig. ich weis nicht mal wo ich die Datei angeben muss die ausgewertet werden soll.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

python skript.py < textdatei 
Antworten |