Seite 1 von 1

Position eines Elements in einem großen String ermitteln

Verfasst: Dienstag 8. April 2008, 21:54
von timo_81
Moin Leute,

ich habe von einem OptionMenu einen Rückgabewert den ich gerne in einem String suchen möchte um dann die Position auszugeben




Hier mein Ansatz:

Code: Alles auswählen

    #Routine wenn Adresse auswählen Knopf gedrückt wurde
    def load_adress(): 
     wahl=item.get() #Element aus einem OptionMenu
     suchwort = re.compile(wahl) #wird benutzt
     for pos in adressen_namen:   #um die Position innerhalb
        if re.match(suchwort, pos): #einer Liste zu ermitteln
           print pos 

   # Fehler: suchwort is not defined


Verfasst: Dienstag 8. April 2008, 21:57
von sea-live

Code: Alles auswählen

suchwort = str(wahl)

Verfasst: Dienstag 8. April 2008, 22:33
von timo_81
hi ,
danke für die schnelle Antwort.
Leider kommt in dem re.match teil immernoch
suchwort nicht definiert

Verfasst: Mittwoch 9. April 2008, 08:23
von Rebecca
Hab' deinen Code nur schnell ueberflogen, aber brauchst du dafuer wirklich Regular Expressions? Ob etwas in einem String enthalten ist, kannst du auch so rausfinden:

Code: Alles auswählen

>>> "hallo" in "hallo welt"
True
>>> "hi" in "hallo welt"
False

Verfasst: Mittwoch 9. April 2008, 08:37
von jens
Was ist "adressen_namen" für ein Typ?
Nach dem Titel zu urteilen ist es find() was du suchst. Siehe auch: http://docs.python.org/dev/library/stdt ... l#str.find

Verfasst: Mittwoch 9. April 2008, 10:29
von timo_81
Hi,
danke ja das mit 'in' war richtig.
Bin eben noch ein noob in python.

Sorry für die profane Aufgabenstellung ;)

Bis die Tage

Verfasst: Mittwoch 9. April 2008, 12:28
von sea-live
wichtig ist das es geht oder etw nicht !

Verfasst: Mittwoch 9. April 2008, 14:28
von timo_81
Hi,
ja es geht vielen Dank.
Ich hätte noch eine kleine Frage, zu der ich in der Suche nicht das Richtige
gefunden habe:

Ich habe in der Variable length eine Zahl gespeichert die angibt wieviel
Label zur Laufzeit generiert werden sollen

Code: Alles auswählen


 #Dynamische Adresserzeugung
         k=-1
         for k in range(length):#erstelle soviele labels wie es ermittelte elemente gibt
           lbl_addy[k]= Label(vorschaufenster,text=final[k])
            lbl_addy[k]=Label.pack()
     
Ich würde also gerne zur Laufzeit Labels erstellten, leider kommt der Fehler 'lbl_addy' is not defined.

Ich wollte nicht extra ein neuen Thread aufmachen.
Hat jemand eine Idee?

Verfasst: Mittwoch 9. April 2008, 14:37
von EyDu

Code: Alles auswählen

#Dynamische Adresserzeugung
#erstelle soviele labels wie es ermittelte elemente gibt
lbl_addy = []
for k in range(length):
    lbl_addy.append(Label(vorschaufenster,text=final[k]))
    lbl_addy[-1].pack()
Für die Frage hätte sich ein neuer Thread schon gelohnt.

Verfasst: Mittwoch 9. April 2008, 15:06
von timo_81
Hi,
Dankeschön!!!
Es funktioniert hervorragend.
Mann, ihr glaubt gar nicht wie lange ich daran schon rumgemacht habe ;)

In diesem Sinne
Regenrinne ;)

Verfasst: Mittwoch 9. April 2008, 21:08
von BlackJack
Wobei hier `k` eigentlich gar nicht gebraucht wird wenn `final` eine Sequenz ist und ``len(final) == length`` gilt. In dem Fall bräuchte man auch `length` nicht.

Code: Alles auswählen

address_labels = list()
for text in final:
    label = Label(vorschaufenster, text=text)
    label.pack()
    address_labels.append(label)