ok, adaptons-nous alors !![]()
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.
Partager