0
votes

Comment puis-je extraire trois caractères à la fois d'une chaîne Python?

Je veux écrire une fonction qui prend une longue chaîne de caractères (une séquence protéique comme 'ugguguuuuauauaauguuuuuuu') et extrait trois caractères à la fois (c'est-à-dire les codons). Il peut soit renvoyer chaque ensemble de trois caractères une après une autre, ou une liste contenant tous les ensembles de trois caractères. De toute façon fonctionnerait. Mais j'ai du mal à comprendre exactement comment faire cela proprement.

Voici ce que j'ai jusqu'à présent: xxx

Il fonctionne pour renvoyer une liste des codons , mais il semble très inefficace. Je n'aime pas utiliser les nombres codés et incrémenter des variables comme celle-là s'il y a une meilleure façon. Je n'aime pas non plus utiliser pour des boucles qui n'utilisent pas réellement la variable dans la boucle. Cela ne semble pas être une utilisation appropriée de celle-ci.

Toute suggestion de la manière d'améliorer cela, avec une fonction / module spécifique, soit une meilleure technique pythonique?

Merci !


3 commentaires

Voir Stackoverflow.com / Questions / 5389507 / ...


Celle-là est ce lien: Stackoverflow.com/Questtions/22571259/... Cette méthode utilise un emballage de texte


Est-ce que cela répond à votre question? Split String chaque nième caractère?


5 Réponses :


2
votes

Le iTerTools La recette de mérou est parfaite pour cela ( https://docs.python.org/3/library/itétools.html#itertools-recipes ): xxx


1 commentaires

Peut-être terminer cela avec [''. Joindre (TUP) pour TUP in Grouper ('Ugguguuuuauaauguuuu', 3)] .



3
votes

Vous pouvez utiliser une compréhension de la liste et obtenir une tranche de longueur 3 de la chaîne à chaque fois.

>>> s="UGGUGUUAUUAAUGGUUU"
>>> res = [s[i:i+3] for i in range(0,len(s),3)]
>>> res
['UGG', 'UGU', 'UAU', 'UAA', 'UGG', 'UUU']


0 commentaires

2
votes

Vous pouvez simplement utiliser l'argument code> code> du plage code> fonction pour éviter de maintenir les variables: xxx pré>

puis peut devenir une compréhension de liste: p>

def get_codon_list(codon_string):
    codon_length = 3

    codon_list = [codon_string[x:x+codon_length] for x in range(0, len(codon_string), codon_length)]

    return codon_list


0 commentaires

0
votes

Vous voudrez peut-être utiliser une boucle while ici et incrémenter l'index par 3 chaque itération, imprimer les trois lettres suivantes et sortir lorsque l'INEDEX est dans 3 de la longueur


0 commentaires

0
votes

avec expression régulière: xxx


0 commentaires