Indizes in einer Liste

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
recnice
User
Beiträge: 45
Registriert: Sonntag 20. März 2011, 12:10

Hallo,

ich stehe bei meinem Problem gerade voll auf dem Schlauch, ich hoff hier kann mir weiter geholfen werden :lol:

Ich habe eine Datei die so aussieht:
  • Boundary Condition 6 ! block links
    save line = true
    Target Boundaries = 6
    ${FSI-BOUNDARY-Y}
    End

    Boundary Condition 7 ! block rechts
    Target Boundaries = 7
    ${FSI-BOUNDARY-Y}
    End

    Boundary Condition 8 ! block oben
    Target Boundaries = 8
    ${FSI-BOUNDARY-X}
    End
Ich möchte nun dass mein Programm die beiden "${FSI-BOUNDARY-Y}" sucht und derenIndizes ausgibt.
Sowei bin ich gekommen

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#-----------------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------------------
Elmer_master    = "fsi_fluid_master_3_kanten.sif"
#------------------------------------------------------------------------------------------------

#Datei einlesn,alle whitespaces weg, in neue liste speichern
with open(Elmer_master,'r') as infile:
    data = infile.readlines()
    print data
    data_new = []
    for eintrag in data:
        print eintrag
        x=  eintrag.strip()
        data_new.append(x)
        #print data_new
#print "${FSI-BOUNDARY-Y}" in data
print data
print "*_*"*20
print data_new
print "*_*"*20

#neue Liste durchsuchen, Index ausgeben
for eintraege in data_new:
    if eintraege == "${FSI-BOUNDARY-Y}":
        print "Yo"
        print data_new.index("${FSI-BOUNDARY-Y}")
Die Ausgabe sieht wie folgt aus:

data_new:
['Boundary Condition 6 \t\t\t! block links', 'save line = true', 'Target Boundaries = 6', '${FSI-BOUNDARY-Y}', 'End', '', 'Boundary Condition 7 \t\t\t! block rechts', 'Target Boundaries = 7', '${FSI-BOUNDARY-Y}', 'End', '', '', 'Boundary Condition 8 \t\t\t! block oben', 'Target Boundaries = 8', '${FSI-BOUNDARY-X}', 'End', '!----------------------------------------------------------------', '']
Die Indizes:
Yo
3
Yo
3
Offensichtlich findet er beide ${FSI-BOUNDARY-Y}, jedoch gibt er nur für das erste gefundene '${FSI-BOUNDARY-Y} den richtigen Index in der Liste aus.
Mir ist ehrlichgesagt nich klar warum :oops:
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Python-Tutorial hat geschrieben:list.index(x)
Return the index in the list of the first item whose value is x. It is an error if there is no such item.
recnice
User
Beiträge: 45
Registriert: Sonntag 20. März 2011, 12:10

Au, die Info hatte ich nicht..... :?

Gibt es eine andere Möglichkeit, für ${FSI-BOUNDARY-Y} beide Indices auszulesen?


Gruß
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Hier mal ein alternativer Ansatz (den man sicher noch weiter aufbessern kann, aber das soll schließlich die grundlegende Idee verständlich demonstrieren):

Code: Alles auswählen

>>> for index, item in enumerate(["A", "B", "C", "A"]):
...    if item == "A":
...        print index, item
... 
0 A
3 A
recnice
User
Beiträge: 45
Registriert: Sonntag 20. März 2011, 12:10

Funktioniert jetzt !! :P

Danke & Gruß
Antworten