1
votes

Tester si une chaîne d'entrée en python contient le caractère correct au format correct

Désolé si cela a déjà été demandé, je n'arrive pas à trouver la réponse nulle part.

J'ai donc une entrée utilisateur pour un programme d'analyse de séquence ADN, je veux vérifier si l'entrée est en fait une séquence c'est-à-dire qu'il contient A, C, T, G ou a, c, t, g.

J'ai pensé à implémenter une expression régulière où la re.search renverrait True si le format correct était trouvé. Ensuite, si c'est faux, je peux demander à nouveau l'entrée, etc.

Mais je n'arrive pas à faire les choses correctement. Toute aide serait très appréciée! J'ai l'impression de tourner en rond!


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser les opérateurs de début et de fin de chaîne, puis spécifier les caractères de votre choix, une ou plusieurs fois, comme ceci:

^[actgACTG]+$

Vous pouvez trouver votre exemple ici: https://regex101.com/r/CgiTEL/1


0 commentaires

0
votes

Solution non-Regex. Cette fonction vérifiera la chaîne et retournera False si un caractère ne correspond pas à quelque chose dans votre liste désignée, sinon retournera True

def test(string_input):
    for s in string_input:  # loop through each character in the string
        if s.lower() not in ["a", "c", "t", "g"]:  # lower() to change s to lowercase
            return False
    else:  # if all characters in string pass at end of loop return True
       return True


string_input = "AATG!4"
test(string_input)
>> False


0 commentaires

2
votes

Vous devez vérifier que la chaîne contient ACTG en minuscules ou majuscules et seulement eux, vous devez donc ancrer l'expression au début et à la fin de la ligne:

import re
re.match("(?i)^[ACTG]+$", input)


0 commentaires