Seite 1 von 1

Indizes in einer Liste

Verfasst: Mittwoch 18. April 2012, 09:40
von recnice
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:

Re: Indizes in einer Liste

Verfasst: Mittwoch 18. April 2012, 09:44
von webspider
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.

Re: Indizes in einer Liste

Verfasst: Mittwoch 18. April 2012, 09:50
von recnice
Au, die Info hatte ich nicht..... :?

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


Gruß

Re: Indizes in einer Liste

Verfasst: Mittwoch 18. April 2012, 09:51
von webspider
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

Re: Indizes in einer Liste

Verfasst: Mittwoch 18. April 2012, 10:01
von recnice
Funktioniert jetzt !! :P

Danke & Gruß