Problem bei der Funktion suchen

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.
Antworten
powerpython
User
Beiträge: 8
Registriert: Donnerstag 19. April 2007, 15:38

Hallo, ich bin ein absoluter Pythonanfänger, und habe ich hier ne Frage.
Unter habe ich ein text-file, die zuerst gelesen werden soll, und dann bestimmte Wörter gesucht werden sollen. Als Ausgabewert soll aber die Zeilennummer und Position an dieser Zeile angezeigt werden.
Kann jmd mir helfen, wie ich vorgehen soll, am besten mir kurze code schreiben, vielen Dank!!

z.B: file.txt:
hello world
0123456789
nice too see you!
HELLO world
goodbye

find (file.txt, world) => return_line = 1 , 4
return_pos = X , Y

find (file.txt, world && HELLO) => return_line = 4
return_pos = Y
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Hier mal ein paar Codestücke, damit du mal herumexperimentieren kannst:

Code: Alles auswählen

#Datei zeilenweise einlesen
f = file(filename, 'rU')
for index, line in enumerate(f):
    print index, line
f.close()

#*words ist eine liste mit den parametern ('hello','world') drin:
def find(filename, *words):
    for word in words:
        print word
find('dateiname', 'world', 'hello')

#Text in einem String suchen
print 'world' in 'hello world'
Falls du damit nicht weiterkommst, poste mal deinen Versuch

Gruss
powerpython
User
Beiträge: 8
Registriert: Donnerstag 19. April 2007, 15:38

eine dumme Frage, gibt es hier Unterschied zwischen filename und 'Dateiname'?
Zizibee
User
Beiträge: 229
Registriert: Donnerstag 12. April 2007, 08:36

Wenn ich das richtig verstanden habe, dann ist 'filename' der Name der Datei, die du durchsuchst und 'dateiname' nur irgendein Beispielwort nach dem du suchen könntest.
Aber ohne Garantie! :wink:
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Das Argument heißt filename. 'dateiname' ist der Pfad der zu durchsuchenden Datei, also sowas wie "C:\Projekt\Beispiel.txt" oder relativ "Beispiel.txt", wobei der ja hier in ´find´ garnicht verwand wird und in Zeile 2 als Variable vorrausgesetzt wird. Is halt nur ein Stück Codebeispiel.
powerpython
User
Beiträge: 8
Registriert: Donnerstag 19. April 2007, 15:38

Ich habe jetzt auch mit folgenden Code ein Text in Zeilenweise numeriert lesen können, aber wie die bestimmte Wörter gesucht werden kann und der Übergabewert ist z.B ('Deutschland' liegt auf der Zeile 2) so darzustellen ist, weiß ich noch nicht.
kann jmd paar Code schreiben?

Code: Alles auswählen

import sys
from string import *
d=open("suchen.txt")
zeilen=d.readlines()
nummer=1
for z in zeilen:
	print "%3i %s" % (nummer, z)
	nummer=nummer+1
 

schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Hi!
Pimphinweise:
1. *-importe vermeiden.
2. ´file´ statt ´open´ nehmen
3. ´nummer += 1´ statt ´nummer = nummer +1´

So, wieso schreibst du nicht einfach

Code: Alles auswählen

if zu_suchendes_word in z:
   print "%s wurde in Zeile %i gefunden" %(zu_suchendes_word, nummer)
Ist ungetestet, aber so in etwa müsste es gehen.

Gruß, jj
BlackJack

2. ist umstritten. Laut Doku und Meister Guido ist `open()` zum öffnen von Dateien und `file` zum beerben zu bevorzugen.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

[offtopic]
2. ist umstritten. Laut Doku und Meister Guido ist `open()` zum öffnen von Dateien und `file` zum beerben zu bevorzugen.
Was ist `beerben`? (also in Python ;) )
[/offtopic]

MfG EnTeQuAk
BlackJack

"beerben" heisst etwas von jemanden erben der etwas zu vererben hat. Was Vererbung in der objektorientierten Programmierung bedeutet, muss ich hoffentlich nicht erklären!? :-)
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Ich dachte open soll irgendwann (version 3.0 ?) rausgenommen werden und komplett durch file ersetzt werden, da open und file doch komplett gleich sind und es nur um die Bezeichnung geht, die auf das, was geöffnet wir, hinweißt, oder?
BlackJack

Nein `open()` bleibt soweit ich weiss. Das eine ist eine Funktion, das andere ein Datentyp. Seit Python 2.5 sind das nicht mehr zwei verschiedene Namen für das selbe Objekt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

schlangenbeschwörer hat geschrieben:Ich dachte open soll irgendwann (version 3.0 ?) rausgenommen werden und komplett durch file ersetzt werden, da open und file doch komplett gleich sind und es nur um die Bezeichnung geht, die auf das, was geöffnet wir, hinweißt, oder?
Das haben viele gedacht (mich eingerechtnet), aber dazu hatten wir den file() vs. open()-Thread, wo das klargestellt wurde. Mit verschiedenen Meinungen dazu.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten