Was falsch ist, dass sich selbst nach solchen Posts immer noch Leute finden, die dir antworten(:K@INFACT), da fehlt mir das Verständnis für.shuang hat geschrieben:Meine Herren , ich mache da was falsch )))))))))))))
[...]
Gibts Dich auch in intelligent? Du hast einen IQ von 6... bei 8 grunzt die Sau!
Neuling, viele Korpus öffnen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, er hat es ja immerhin noch eingesehen:Darii hat geschrieben:Was falsch ist, dass sich selbst nach solchen Posts immer noch Leute finden, die dir antworten(:K@INFACT), da fehlt mir das Verständnis für.shuang hat geschrieben:Meine Herren , ich mache da was falsch )))))))))))))
[...]
Gibts Dich auch in intelligent? Du hast einen IQ von 6... bei 8 grunzt die Sau!
Ok, ein Wort des guten Willens vermisse ich auch - etwa "Sorry, hatte nen Brett vorm Kopf. Danke, jetzt hab ich es endlich kapiert..."shuang hat geschrieben: habs gelöst, sehr nett dankeschön... Wink
Aber was solls.
Ich werde das Gefühl auch immer noch nicht los, dass es da eine Sprachbarriere gibt... der Nickname und die Art erinnern mich leider immer noch an gewisse Leute, die einem hier an der Uni Tag täglich das Leben schwer machen. Leider äußert sich der OP ja nicht zu Rückfragen...
Code: Alles auswählen
import glob
count=0
while count != ????:
for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
with open(fname, "r") as infile:
for line in infile:
for word in line.split():
if word == word[1]:
count+= 1
print line, count
2. Wie kann ich obwohl ich mit Glob alle Textdateien einlese, dennoch die Texte trennen?
Danke
Entschuldige mich mal, aber was ist eigl dein Problem ?Hyperion hat geschrieben:Naja, er hat es ja immerhin noch eingesehen:Darii hat geschrieben:Was falsch ist, dass sich selbst nach solchen Posts immer noch Leute finden, die dir antworten(:K@INFACT), da fehlt mir das Verständnis für.shuang hat geschrieben:Meine Herren , ich mache da was falsch )))))))))))))
[...]
Gibts Dich auch in intelligent? Du hast einen IQ von 6... bei 8 grunzt die Sau!Ok, ein Wort des guten Willens vermisse ich auch - etwa "Sorry, hatte nen Brett vorm Kopf. Danke, jetzt hab ich es endlich kapiert..."shuang hat geschrieben: habs gelöst, sehr nett dankeschön... Wink
Aber was solls.
Ich werde das Gefühl auch immer noch nicht los, dass es da eine Sprachbarriere gibt... der Nickname und die Art erinnern mich leider immer noch an gewisse Leute, die einem hier an der Uni Tag täglich das Leben schwer machen. Leider äußert sich der OP ja nicht zu Rückfragen...
Ist dir langweilig? Oder willst du einfach nur meine Nr? hehehehe
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Gar nichts! Wozu das while? Das hat doch mit dem Zählen überhaupt nichts zu tun!shuang hat geschrieben:1. Was muss an den Stellen an denen ich die Fragezeichen gesetzt habe hin, damit die Worte in den Texten gezählt werden?Code: Alles auswählen
import glob count=0 while count != ????: for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"): with open(fname, "r") as infile: for line in infile: for word in line.split(): if word == word[1]: count+= 1 print line, count
Das hier ergibt auch keinen Sinn:
Code: Alles auswählen
if word == word[1]:
Code: Alles auswählen
In [1]: s = "fo"
In [2]: if s == s[1]:
...: True
...:
...:
In [3]: s[1]
Out[3]: 'o'
Was versuchst Du eigentlich zu erreichen?
Was heißt das nun? Willst Du die Wörter für die Texte getrennt zählen? Oder was? "fname" ist ja in jedem Durchlauf ein andererDateiname. Diese könntest Du Dir ja ggf. in einer Datenstruktur merken... für das getrennte Zählen von Worten böte sich da ein dict an:2. Wie kann ich obwohl ich mit Glob alle Textdateien einlese, dennoch die Texte trennen?
Code: Alles auswählen
counts = {}
# dann for
# und die ganze Zählerei
# ganz am Ende der äußeren Schleife:
counts[fname] = count
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ok. Schade, dass ich das erst nach meinem letzten Post gelesen habe... der Fairness für andere spätere Leser lasse ich meine Lösung mal stehen.shuang hat geschrieben: Entschuldige mich mal, aber was ist eigl dein Problem ?
Ist dir langweilig? Oder willst du einfach nur meine Nr? hehehehe
@OP: *plonk*
@ Hyperion ich möchte mich doch gar nicht mit dir streiten. Du bist gut im coden ich nicht so gut. Klasse das du mir hilfst.
Also ich erkläre dir mal was ich die ganze Zeit versuche zu tun.
Ich möchte ein Program schreiben, das einen Korpus, also alle meine Texte einliest. Das Programm soll dabei einen Index erstellen, der für jeden Text eine " Liste" vorkommenden Wörter und ihre Häufigkeiten zeigt
Also ich erkläre dir mal was ich die ganze Zeit versuche zu tun.
Ich möchte ein Program schreiben, das einen Korpus, also alle meine Texte einliest. Das Programm soll dabei einen Index erstellen, der für jeden Text eine " Liste" vorkommenden Wörter und ihre Häufigkeiten zeigt
shuang hat geschrieben:1. Was muss an den Stellen an denen ich die Fragezeichen gesetzt habe hin, damit die Worte in den Texten gezählt werden?Code: Alles auswählen
import glob count=0 while count != ????: for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"): with open(fname, "r") as infile: for line in infile: for word in line.split(): if word == word[1]: count+= 1 print line, count
2. Wie kann ich obwohl ich mit Glob alle Textdateien einlese, dennoch die Texte trennen?
Danke
Code: Alles auswählen
import glob
count=0
breakNow = False
for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
if breakNow:
break
with open(fname, "r") as infile:
for line in infile:
if breakNow:
break
for word in line.split():
if count >= 2000: #wenn 200 worte eingelesen wurden
breakNow = True # ende
break
if word == word[1]: # keine ahnung was das soll!?
count+= 1
print line, count
if len(word) > 1: # vielleicht sollen das keine einzelnen Buchstaben sein?
count += 1
print line, count
Edit: sry hab gerade einen fehler gesehen
Edit2: Habs berichtigt... ist vielleicht nicht ganz so schön aber es geht
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
*seufz* Weil ich zu lieb für diese Welt bin...
Link
Die Idee basiert eben auch auf Dicts.
Letztlich musst Du das für jede datei "neu" binden und Dir nach der Auswertung, bevor Du die nächste Datei vornimmst in das von mir bereits oben vorgeschlagene Dict reinschreiben, so dass Du am Schluss o ne Struktur hast
Link
Die Idee basiert eben auch auf Dicts.
Letztlich musst Du das für jede datei "neu" binden und Dir nach der Auswertung, bevor Du die nächste Datei vornimmst in das von mir bereits oben vorgeschlagene Dict reinschreiben, so dass Du am Schluss o ne Struktur hast
Code: Alles auswählen
corpus_stats = {
"file1.txt": {
"lorem": 8,
"...": 3
},
"file2.txt": {
...
}
}
shuang hat geschrieben:oh ein Missverständnis. Die Anzahl des selbigen Wortes sollen gezählt werden. Nicht die Sätze.
Code: Alles auswählen
import glob
count=0
breakNow = False
woerter = {}
for fname in glob.glob("C://**/**/Desktop/Korpus/*.txt"):
if breakNow:
break
with open(fname, "r") as infile:
woerter[fname] = {}
for line in infile:
if breakNow:
break
for word in line.split():
if count >= 2000: #wenn 200 worte eingelesen wurden
breakNow = True # ende
break
if word in woerter[fname]:
woerter[fname][word] += 1
# ich weiß jetzt nicht ob du
# count hochzählen willst
# wenn das wort schon drin ist
# oder du es addest.
# Musst du dann selber
# editieren
count += 1
print word, count
else:
woerter[fname][word] = 1
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Jungs also ich hab da mal was gecoded. So in etwa stelle ich mir das ganze vor. Jedoch möchte ich das ganze jetzt noch mit glob für alle Dateien zusammen nutzen, wie binde ich das nur ein?
Code: Alles auswählen
import sys
from string import maketrans
import time
def einlesen():
count = {}
leer = "!\"$%&/()[]{}=?\\@*+~#'<>|,.-;:_0987654321"
trans = maketrans(leer, len(leer)* " ")
for line in file('C:/Users/Sharon/Desktop/prozess.txt','r'):
line = line.translate(trans).lower()
line.strip()
for word in line.split():
try:
count[word]+=1
except KeyError:
count[word] =1
items = count.items()
items.sort(key=lambda x: x[1], reverse=True)
for item in items:
print "%-20s %20d" % item
time.sleep(0.01)
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du gehst die Sache nach wie vor falsch an. Auf einmal taucht das ganze verpackt in einer Funktion auf (was prinzipiell gut ist!), allerdings ohne klare Benennung, Aufgabe und Parameterübergabe und -rückgabe.
Dann hast Du eine Sortierfunktion eingebaut und dann noch eine Ausgabe - wobei das time.sleep() hier arg irritiert!
Wieso zerlegst Du das ganze nicht klarer in einzelne Schritte?
Ich würde so vorgehen; nicht unbedingt sortiert, sondern nur faktische Aufgaben:
1.) Funktion zum "Parsen" einer Datei. Wörter zählen und als Dictionary zurückgeben. Je nach Parsing, sich wiederholende Preparation auslagern.
2.) Funktion zum Bestimmen aller Dateien, die geparst werden sollen. Entweder Übergabe der Parsing-Funktion oder Rückgabe einer Liste von Dateinamen
3.) Funktion zum Speichern / Exportieren. Zur Not eben reines "print"
Daher mal hier mein Ansatz: Link
Dann hast Du eine Sortierfunktion eingebaut und dann noch eine Ausgabe - wobei das time.sleep() hier arg irritiert!
Wieso zerlegst Du das ganze nicht klarer in einzelne Schritte?
Ich würde so vorgehen; nicht unbedingt sortiert, sondern nur faktische Aufgaben:
1.) Funktion zum "Parsen" einer Datei. Wörter zählen und als Dictionary zurückgeben. Je nach Parsing, sich wiederholende Preparation auslagern.
2.) Funktion zum Bestimmen aller Dateien, die geparst werden sollen. Entweder Übergabe der Parsing-Funktion oder Rückgabe einer Liste von Dateinamen
3.) Funktion zum Speichern / Exportieren. Zur Not eben reines "print"
Daher mal hier mein Ansatz: Link
was genau ist eigl der Unterschied zwischen:
und
Danke
Code: Alles auswählen
File= open("....
Code: Alles auswählen
with blabla.open(filename, "r", encoding=coding) as infile:
Geht denn
?
Ich dachte es geht nur mit
Code: Alles auswählen
with blablabla.open(filename) as fobj
Ich dachte es geht nur mit
Code: Alles auswählen
with open(filename) as fobj
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
@INFACT: Arbeite dich etwas in das Thema "Contextmanager" ein, dann solltest du schnell verstehen, wieso das auch gehen kann. Wichtig sind halt nur die `__enter__()` und `__exit__()` Methode des Objekts.