92 votes

Recherche de caractères génériques Python dans une chaîne de caractères

Disons que j'ai une liste

list = ['this','is','just','a','test']

comment puis-je faire en sorte qu'un utilisateur effectue une recherche joker ?

Mot clé : 'th_s'.

Retournerait 'ceci'.

0voto

Michel Soares Points 1

Pourquoi n'utilisez-vous pas simplement la fonction de jonction ? Dans une regex findall() ou group() vous aurez besoin d'une chaîne de caractères donc :

import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = re.findall(regex, ' '.join(l)) #Syntax option 1
matches = regex.findall(' '.join(l)) #Syntax option 2

La fonction join() permet de transformer une liste en une chaîne de caractères. Le guillemet simple avant join est ce que vous allez mettre au milieu de chaque chaîne de la liste. Lorsque vous exécutez cette partie de code (' '.join(l)), vous obtenez ceci :

c'est juste un test

Vous pouvez donc utiliser la fonction findal().

Je sais que j'ai 7 ans de retard, mais j'ai récemment créé un compte parce que j'étudie et que d'autres personnes pourraient avoir la même question. J'espère que cela vous aidera, vous et les autres.


Mise à jour après les commentaires de @FélixBrunet :

import re
regex = re.compile(r'th.s')
l = ['this', 'is', 'just', 'a', 'test','th','s', 'this is']

matches2=[] #declare a list
for i in range(len(l)): #loop with the iterations = list l lenght. This avoid the first item commented by @Felix
if regex.findall(l[i]) != []: #if the position i is not an empty list do the next line. PS: remember regex.findall() command return a list.
    if l[i]== ''.join(regex.findall(l[i])): # If the string of i position of l list = command findall() i position so it'll allow the program do the next line - this avoid the second item commented by @Félix
        matches2.append(''.join(regex.findall(l[i]))) #adds in the list just the string in the matches2 list

print(matches2)

-9voto

Harry1992 Points 383

Une méthode simple consiste à essayer os.system :

import os
text = 'this is text'
os.system("echo %s | grep 't*'" % text)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X