ok, adaptons-nous alors !
Bon voilà un début...
J'ai fait une fonction qui compare deux formules et qui garde les caractères présents dans les deux formules, dans l'ordre :
Si j'execute donc ce programme, on a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 a = "5-HT<sub>1A</sub>" b = "5-hydroxytryptamine 1A" caract = a[0].upper() stop = 0 restes = [] i = 0 for j in range(len(a)): caract = a[j].upper() print "a[%s] = %s"% (j,a[j]) # vérification (TEST) for i in range(len(b)): print 'i = ', i # vérification (TEST) print "b[%s] = %s"% (i,b[i]) # vérification (TEST) if caract == b[i].upper(): restes = restes + [caract] print "restes", restes break i = i+1 print "restes = ", restes
pour ces deux formules, on aura donc une expression régulière du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part >>> restes = ['5', '-', 'H', 'T', '1', 'A']
5.*?-.*?[Hh].*?[Tt].*?[1].*?[Aa]
mais bon c'est que pour ces deux formules (il faut donc étendre le programme à toutes les formules) et ce serait bien de notifier lorque 2 caractères sont côte à côte (par exemlpe ici 5-H)
C'est un début donc !...
[EDIT]
si on rajoute ces lignes à la suite :
on obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 regex = "(?i)(" + restes[0] k = 1 while k < len(restes): regex = regex + ".*?" + restes[k] k = k + 1 regex = regex + ")" print "regex = ", regex
note le (?i) c'est l'option ignorecase (majuscule ou minuscule c'est pareil, du coup, "5-ht" = "5-HT")
Code : Sélectionner tout - Visualiser dans une fenêtre à part >>>regex = (?i)(5.*?-.*?H.*?T.*?1.*?A)
[/EDIT]
Cependant il y a encore un problème, car sur la première ligne de ton texte, on trouve aussi bien :
5-HT-1A
que :
guanine nucleotide-binding regulatory protein-coupled
ou :
ADRB2RL1
Personnellement, je ne vois aucun caractères en commun dans ces trois formules... Donc si on execute le programme précédent sur ces trois formules, l'expression régulière retournée sera nulle...
Les personnes qui t'on donné ceci à faire se sont-t-il aperçu qu'il y avait ce problème là ?
Parce qu'ici si tu essaye de récupérer les formules de cette ligne :Qu'obtiens-tu ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 P08908 5-HT<sub>1A</sub> 5-hydroxytryptamine 1A receptor 5-HT-1A|Serotonin receptor 1A|5-HT1A|G-21|5-HT1a receptor|ADRB2RL1, ADRBRL1|G protein coupled receptor|guanine nucleotide-binding regulatory protein-coupled receptor HTR1A 5-HT1A|ADRBRL1|ADRB2RL1
Bonjour!
Je voudrais savoir s'il est possible de sélectionner la première lettre d'un mot pour la remplacer. En fait est-il possible de la repérer en tant que 1ère lettre ou faut-il la repérer uniquement avec un caractère spécial devant (par exemple un espace)?
Si j'ai :
Je voudrais récupérer :guanine nucleotide-binding regulatory protein-coupled receptor
C'est toujours pour mon histoire d'expressions régulières![Gg]uanine[Nn]ucleotide[Bb]inding[Rr]egulatory[Pp]rotein[Cc]oupled[Rr]eceptor
Merci pour votre aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager