Noob: Else wird komplett ignoriert, wieso?

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
maowB
User
Beiträge: 12
Registriert: Donnerstag 15. Oktober 2020, 12:17

Hallo, ich bin leider blutiger Anfänger; nun habe ich ein Problem. Nachdem ich endlich herausgefunden habe, wie ich nach einem bestimmten Wort trennen kann habe ich das gleich versucht auf meinen Code anzuwenden @streamlit

Ich habe zwei Exceldateien. Einmal wo bei der entsprechenden Position GEO vorkommt, da funktioniert das einwandfrei. Sobald jedoch das besagte "erfolgte" steht, passiert einfach nix. Er schreibt ganz stumpf das hin. Hab es über st.write("test") getestet ob die else überhaupt anwendung findet; und siehe da: nix passiert. Scheinbar wird die else komplett ignoriert; weiß jemand wieso?

Code: Alles auswählen

       if single_file:
            Auftraggeber=(df.iat[2,1])
            Probenahmeort=(df.iat[7,1])
            Probenahme=(df.iat[8,1])
            
            if Probenahme.find("GEO"):
                Probenehmer=(Probenahme.split("-")[-1])#greift auf das letzte Element im Bereich Probenahme zu@[-1]
            else:
                st.write("test")                                   #wird komplett ignoriert, wieso???
                Probenehmer = Probenahme[len("erfolgte durch"):]   #wieso geht das nicht???

            datum=' 01.01.1001 '
            st.markdown('Projekt- bzw. Auftragsnummer: '+Projektnummer+' / '+Auftragsnummer)
            st.markdown('Auftraggeber: '+Auftraggeber)
            st.markdown('Probenahmeort: '+Probenahmeort)
            st.markdown('Probenehmer: '+Probenehmer)
        else:
            st.markdown('**Zur Darstellung der Basisdaten bitte zunächst eine Excel-Datei importieren **!')
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

`find` macht nicht das, was Du denkst, was es tut. Benutze den in-Operator.
Da sind einige Klammern zu viel. Statt mit + Strings zusammenzustückeln, benutzt man Formatstrings.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@maowB: Wenn man nur einmal aufteilen will, dann sollte man entweder `split()` das auch mitteilen, beziehungsweise `rsplit()` in diesem Fall, oder `partition()`/`rpartition()` verwenden.

Da fehlt ein bisschen Fehlerbehandlung für den Fall, dass die Daten nicht so aussehen wie erwartet.

`datum` wird nirgends verwendet.

Ungetestet:

Code: Alles auswählen

        if single_file:
            probenahme = df.iat[8, 1]
            if "GEO" in probenahme:
                _, delimiter, probenehmer = probenahme.rpartition("-")
                if not delimiter:
                    raise ValueError(f"expected '-' in {probenahme!r}")
            else:
                prefix = "erfolgte durch"
                if not probenehmer.startswith(prefix):
                    raise ValueError(
                        f"exptected {probenahme!r} to start with {prefix!r}"
                    )
                probenehmer = probenahme[len(prefix) :].lstrip()

            st.markdown(
                f"Projekt- bzw. Auftragsnummer: {projektnummer} /"
                f" {auftragsnummer}"
            )
            st.markdown(f"Auftraggeber: {df.iat[2, 1]}")
            st.markdown(f"Probenahmeort: {df.iat[7, 1]}")
            st.markdown(f"Probenehmer: {probenehmer}")
        else:
            st.error(
                "**Zur Darstellung der Basisdaten bitte zunächst eine"
                " Excel-Datei importieren **!"
            )
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten