Hallo zusammen,
ich bin absoluter Neuling in Python und versuche unterschiedliche Zeichenfolgen innerhalb einer Zeichenkette zu finden, z.B. die Zeichenfolgen "ATG" oder "AAT" oder "CGA" etc. sollen in der Zeichenkette "ATGCGCAATGCGATATACCTTACT" sequenziert werden.
Ich hatte folgendes geschrieben:
Zeichenkette="ATGCGCAATGCGATATAC"
if "ATG" or "AAT" or "CGA" in Zeichenkette:
print("Sequenz ist enthalten")
else: print ("Sequenz nicht enthalten")
Leider hat das nicht geklappt. Denn bei der Gegenprüfung mit der Suche nach "XXX" or "YYY" or "ZZZ" wird trotzdem die Meldung "Sequenz ist enthalten" ausgegeben.
Was habe ich falsch gemacht bzw. nicht berücksichtigt?
Danke für Eure Rückmeldung,
Vuotbien
Zeichenfolge innerhalb einer Zeichenkette finden
Code: Alles auswählen
zeichenkette = "XXXXXAATXXXXX"
strings_to_match = ["ATG", "AAT", "GCA"]
if any(string_matchcode in zeichenkette for string_matchcode in strings_to_match):
print("Jo")
Code: Alles auswählen
zeichenkette = "XXXXXXXXXXXX"
if "ATG" in zeichenkette or "AAT" in zeichenkette or "CGA" in zeichenkette:
print("jo")
else:
print("ne")
Zuletzt geändert von Jankie am Donnerstag 30. Januar 2020, 16:46, insgesamt 1-mal geändert.
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@vuotbien: Du hast nicht berücksichtigt das ``or`` ein binärer Operator ist und kein umgangsprachliches „oder“. Deine Bedingung ist *immer* wahr, weil als erstes "ATG" or "AAT" ausgeführt wird und *das* ist halt immer wahr, denn schon der erste Operand vom ``or``, das "ATG", ist wahr weil bei Zeichenketten (wie bei anderen Sequenztypen) nur eine leere Zeichenkette unwahr ist.
Wenn man da unnötige Klammern hinzufügen würde um zu zeigen in welcher Reihenfolge das ausgeführt wird, sähe das so aus:
Was Du eigentlich willst ist:
oder:
Wenn man da unnötige Klammern hinzufügen würde um zu zeigen in welcher Reihenfolge das ausgeführt wird, sähe das so aus:
Code: Alles auswählen
if a or b or c in X:
# =>
if (a or b) or (c in X):
Code: Alles auswählen
if a in X or b in X or c in X:
Code: Alles auswählen
if any(x in X for x in [a, b, c]):
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Alternativ:
Code: Alles auswählen
import re
if re.search("ATG|AAT|CGA", dein_string):
print("Gefunden")
else:
print("Nicht gefunden")