Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

[Python] Wortdurchschnittlslänge errechenen.

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
no^mis
Capture
Capture
Beiträge: 6219
Registriert: Nov 2006

[Python] Wortdurchschnittlslänge errechenen.

Beitrag von no^mis »

hey!

ich habe ne frage zu meinem code. Ich soll die Durchschnittslänge der Wörter eines Textes errechnen mit Python.

1. wieso tuts der join befehl nicht? der löscht mir die leerzeichen nicht, muss ich da was importieren?
2. wie kann ich mehrere verschiedene zeichen durch ein einzelnes zeichen ersetzen, ich habe eher ne drckige lösung dafür in meinem programm verwendet, funktioniert zwar auch, ist aber irre vieel schreibarbeit.

durch das nichtlöschen der leerzeichen werde ich vermutlich einen falschen durchschnittswert herausbekommen...

Der Code sieht wie folgt aus.

Code: Alles auswählen

#! /usr/bin/env python
# *-* coding:utf-8 *-*

from re import sub,findall,DOTALL

text=""""Dies ist ein simpler Beispieltext zur Errrechnung der Durchschnittslänge eines Wortes in einem beliebigen Text."""

text_bereinigt=text.replace(",","").replace(",","").replace(".","").replace(";","").replace(":","").replace("'","").replace("!","").replace("?","")

wortanzahl=text_bereinigt.split()
wert_wortanzahl=float(len(wortanzahl))

zeichenanzahl="".join(text_bereinigt)
wert_zeichenanzahl=float(len(zeichenanzahl))

durchschnittswort=float(wert_zeichenanzahl/len(wortanzahl))

print "Der Text hat folgende Eigenschaften: \n\n",int(wert_wortanzahl)," Wörter \n",int(wert_zeichenanzahl)," Zeichen \n","Das Durchschnittswort hat",durchschnittswort," Zeichen."
Ahja und weiss einer, wie man den Zeilenumbruch bei IDLE für Mac aktiviert? Mein Beispieltext ist um einiges länger.

Danke!
Bild

Lieber toter Rapper als lebender Singer/Songwriter!
xxx
Bones
Bones
Beiträge: 3074
Registriert: Aug 2003
Kontaktdaten:

Beitrag von xxx »

1) Du splittest auf wortanzahl aber joinst auf text_bereinigt. D.h. der join sollte auf wortanzahl sein

2) Dafür kannst du dicts nutzen:

Code: Alles auswählen


woerter_dict = {"ae": "a", "ue": "u"}
text = "Das ist ein suesser Taeter"

for k, v in woerter_dict.iteritems():
    text = text.replace(k, v)

>>> Das ist ein susser Tater

Generell kannst du dir viel Code sparen, wenn bisschen mit List-Comprehensions arbeitest:

Code: Alles auswählen

word_count = [len(x) for x in text.split()]
average = sum(word_count) / float(len(word_count))
Bild
no^mis
Capture
Capture
Beiträge: 6219
Registriert: Nov 2006

Beitrag von no^mis »

ach super, ich bin auch ein idiot ey. ja ich muss mir dieses listending nochmal genauer anschauen, bin noch totaler newbie. aber danke!
Bild

Lieber toter Rapper als lebender Singer/Songwriter!
Antworten