Position eines Elements in einem großen String ermitteln

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
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

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

sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Code: Alles auswählen

suchwort = str(wahl)
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

hi ,
danke für die schnelle Antwort.
Leider kommt in dem re.match teil immernoch
suchwort nicht definiert
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

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
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

Hi,
danke ja das mit 'in' war richtig.
Bin eben noch ein noob in python.

Sorry für die profane Aufgabenstellung ;)

Bis die Tage
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

wichtig ist das es geht oder etw nicht !
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

Hi,
Dankeschön!!!
Es funktioniert hervorragend.
Mann, ihr glaubt gar nicht wie lange ich daran schon rumgemacht habe ;)

In diesem Sinne
Regenrinne ;)
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)
Antworten