Suche im Textfile

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
PT

Suche im Textfile

Beitragvon PT » Dienstag 13. April 2004, 08:10

Hallo an Alle!


Vielleicht könnt Ihr mir bei folg. Problem helfen:
Und zwar möchte ich ein Textfile einlesen und dort nach bestimmten Ausdrücken suchen (z.B. Outports im folgenden Bsp.) und dann alle zugehörigen Ausdrücke einlesen (hier: test/Subsystem/Subsystem/Out1
und test/Subsystem/Out1). Diese Werte sollen dann Variablennamen zugewiesen werden.

Trace File Matlab Simulink Modell 'test.mdl'

Erstellungsdatum(J/M/T):(2004, 4, 8)

Inports
test/Subsystem/Subsystem/In1
test/Subsystem/In1
test/In1


Outports
test/Subsystem/Subsystem/Out1
test/Subsystem/Out1





Constants
test/Constant



FYI: Ich schreibe gerade meine Diplomarbeit und muss teilweise Python als Sprache verwenden, wobei meine Kenntnisse bis jetzt recht gering sind ;-)

Grüße,

PT
DER Olf
User
Beiträge: 283
Registriert: Mittwoch 24. Dezember 2003, 19:32

Beitragvon DER Olf » Dienstag 13. April 2004, 10:03

ich glaube, dass kann man mit regular expressions machen.

modul re.

aber hab keine ahnung wie :roll:

mfg

Olf
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Dienstag 13. April 2004, 11:43

Um nur ein Wort zu suchen würd ich die RegExp im Schrank lassen. find() tuts auch.

Code: Alles auswählen

f = file( "datei.txt", "r" )
lines = f.readlines()
for line in lines:
    if line.find( "Suchwort" ) != -1:
        print "gefunden"
f.close()


So müsste das eigentlich funzen.

Code: Alles auswählen

if "Suchwort" in line:

müsste eigentlich auch gehen.
PT

Danke

Beitragvon PT » Mittwoch 14. April 2004, 15:15

...fuer den Tipp mit dem re
koronatzu

Ich hab mal noch ne zusätzliche Frage:

Beitragvon koronatzu » Freitag 23. April 2004, 06:26

Christophy der Quelltext ist echt gut!
Was wäre wenn ich allerdings die Wörter zählen wollte? Gibt es da ein bestimmten Befehl oder so? :?:
koronatzu
User
Beiträge: 16
Registriert: Freitag 23. April 2004, 06:30
Wohnort: Wiesbaden

Beitragvon koronatzu » Freitag 23. April 2004, 06:31

Sorry vergessen einzulocken
koronatzu
User
Beiträge: 16
Registriert: Freitag 23. April 2004, 06:30
Wohnort: Wiesbaden

Noch ne Frage

Beitragvon koronatzu » Freitag 23. April 2004, 10:23

Wofür steht das r in f=file("datei.txt", "r")????
FrancescoA

Re: Noch ne Frage

Beitragvon FrancescoA » Freitag 23. April 2004, 11:40

koronatzu hat geschrieben:Wofür steht das r in f=file("datei.txt", "r")????


Um das File im Mode "Read-only" zu öffnen.

aus python docu:

file( filename[, mode[, bufsize]])
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Re: Ich hab mal noch ne zusätzliche Frage:

Beitragvon Milan » Freitag 23. April 2004, 19:58

koronatzu hat geschrieben:Christophy der Quelltext ist echt gut!
Was wäre wenn ich allerdings die Wörter zählen wollte? Gibt es da ein bestimmten Befehl oder so? :?:


Was für eine Art suche meinst du denn? Wörter insgesamt zählen oder wissen, wieviele "Häuser" es gibt. Für letzteres tut es die Stringmethode count, für ersteres würde ich allein schon wegen Satzeichen etc. RE's verweden.

Milan
koronatzu
User
Beiträge: 16
Registriert: Freitag 23. April 2004, 06:30
Wohnort: Wiesbaden

Wörter zählen

Beitragvon koronatzu » Samstag 24. April 2004, 10:58

Es geht darum die gesamte Wortanzahl in einer übergebenen Textfile zu ermitteln. Count ist da nicht so gut. Ich habe auch schon versucht die den Text in ein Dictionary umzuwandeln, ist aber an den Satzzeichen gescheitert... Wie würde das denn mit REs gehen, hab mit denen noch nicht gearbeitet?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 24. April 2004, 11:56

Hi koronatzu,

Code: Alles auswählen

f = file("datei.txt", "r")
text = f.read()
f.close()
worte = text.split()
anzahl = len(worte)

funktioniert mit jedem anständig geschriebenen Text. Falls nicht, beschreibe genauer wo Probleme auftreten oder poste einen Beispieltext.


Gruß

Dookie
koronatzu
User
Beiträge: 16
Registriert: Freitag 23. April 2004, 06:30
Wohnort: Wiesbaden

Beitragvon koronatzu » Samstag 24. April 2004, 14:30

Jetzt habe ich immerhin die Anzahl der Wörter... Kann ich auch rausfinden wieviele wörter mit einer bestimmten Anzahl von Buchstaben es gibt. Es soll dann so eine Art Statistik geben.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 24. April 2004, 15:09

Dookie hat geschrieben:Hi koronatzu,

Code: Alles auswählen

f = file("datei.txt", "r")
text = f.read()
f.close()
worte = text.split()
anzahl = len(worte)

funktioniert mit jedem anständig geschriebenen Text. Falls nicht, beschreibe genauer wo Probleme auftreten oder poste einen Beispieltext.


Hi. Würde ich nicht sagen. Wie schon oben erwähnt, müssten Satzzeichen beachtet werden: "Wenn Fliegen hinter Fliegen fliegen, fliegen Fliegen hinter Fliegen." Hier kommt "Fliegen" 4 mal vor und "fliegen" 2 mal. Trotzdem wird ersteres nur 3 mal gewertet und zweites gar nur einmal, da split das Komma und den Punkt nicht wegschneidet.

Mit RE's würde ich mir alle Zeichen auflisten, aus denen bei dir Wörter bestehen sollen und die dann in einen regulären Audruck einbauen. Das sieht dann so aus:

Code: Alles auswählen

import re
wort=re.compile("[\wäüöÄÜÖß]+",re.I)
worte=wort.findall(text)
anzahl=len(text)


Welche Länge die Worte haben ist dann auch nicht schwer, ein Dictionary tut dann den Rest:

Code: Alles auswählen

stat={}
for i in worte:
    anz=i.count("x")#oder für die Länge anz=len(i) oder ...
    try:
        stat[anz]+=1
    except KeyError:
        stat[anz]=1


Milan
Zuletzt geändert von Milan am Samstag 24. April 2004, 16:06, insgesamt 1-mal geändert.
koronatzu
User
Beiträge: 16
Registriert: Freitag 23. April 2004, 06:30
Wohnort: Wiesbaden

Beitragvon koronatzu » Samstag 24. April 2004, 15:35

Also die Anzahl der Wörter mit einer bestimmten Länge hab ich inzwischen schon rausbekommen, der einzige Makel sind halt die Satzzeichen, die noch dranhängen. Aber das Argument findall akzeptiert er bei mir nicht. Folgende Fehlermeldung:


AttributeError: 'list' object has no attribute 'findall'
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 24. April 2004, 16:05

HI. Mein Fehler. Es muss natürlich "worte=wort.findall(text)" heißen...

Milan

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder