0
votes

Rechercher cette chaîne et capturer le nom

J'ai ce code xxx pré>

qui extrait ulk4 fort> de la chaîne b4_3482_ulk4_cmv-f. p>

J'essaie de développer une regex cela extraire GAR1 de la chaîne A6_I032_5_GAR1_CMV-F. Jusqu'à présent, rien que j'ai essayé semble travailler. P>

s = (r '([\W_])([^_]+)_CMV', f ) - this returns a syntax error
s = re.search (r'([^_]+)_CMV', f ) - this returns an Attribute error
       Traceback (most recent call last):
       File "protocola1.py", line 21, in <module>
       gene = s.group(1)
       AttributeError: 'NoneType' object has no attribute 'group'


2 commentaires

Si vous obtenez une erreur de syntaxe, vous devez afficher l'erreur et le code nécessaire pour le reproduire.


Montrez-nous le code que vous utilisez et quel est votre résultat attendu


3 Réponses :


0
votes

Dans votre commande (r '([\ w _ _]) ([^ _ w _]) ([^ _] +) _ cmv', f) Vous avez un espace entre votre R et le Début de la chaîne ( ') - Cela provoquera une erreur de syntaxe. Placez le R directement devant le caractère de démarrage de la chaîne et cela doit être résolu.


1 commentaires

Pour résoudre votre problème suivant, s est un non constitué car aucun match n'a été trouvé - je propose de revoir votre regex, en utilisant un outil tel que Regex101.com



0
votes

Votre regex ([\ w]) ([^ _] +) _ cmv correspond à un caractère non-Word suivi de 1 ou plusieurs non-soussecore suivant par _cmv .

La chaîne de test donnée n'est pas assortie par cette regex, vous n'avez pas de caractère non-Word, puis le résultat s est null.

Utilisez cela à la place. : xxx


0 commentaires

0
votes

Ceci est le premier code que vous utilisez: xxx

Ceci est la première solution pour le code mentionné:

Le code ci-dessus fonctionne parfaitement bien comme vous pouvez le voir dans ce lien . Dans votre commande, vous avez l'espace entre votre R et le début de votre regex. En outre, lorsque vous utilisez cette commande, vous devez utiliser groupe (2) comme vous pouvez le voir dans le lien ci-joint de la regex. Comme le groupe (1) vous donne _ (Undercore) . De plus, dans ce cas, vous n'avez pas utilisé re.search qui pourrait probablement vous donner une erreur.

Vous pouvez utiliser quelque chose comme ceci: xxx


Ceci est le deuxième code que vous êtes Utilisation: xxx

Il s'agit de la deuxième solution pour le code mentionné:

Le code ci-dessus fonctionne parfaitement Bien que vous pouvez dans ce lien . Dans votre commande, il affiche attributeError: "NOETYPE 'Object n'a pas d'attribut" groupe ", qui est définitivement le signe que les fichiers ont Aucun valeur dedans. En outre, lorsque vous utilisez cette commande, vous devez utiliser groupe (1) comme indiqué dans le lien ci-joint.


0 commentaires