J'ai une liste de listes contenant des lexiques. Je veux supprimer des listes de la liste si elles ont des lexiques qui ne contiennent pas un motif de caractères tel que "(atè | atwa | atif) $". Par exemple:Comment supprimer une ligne d'une liste de listes si l'un des mots ne contient pas certains caractères en Python?
list = [['blablatè', 'blabla'], ['klak'], ['matwa', 'mat'], ['ma', 'mat'], ['ratif']]
Le résultat attendu serait:
[['blablatè', 'blabla'], ['matwa', 'mat'], ['ratif']]
Je pensais que je pouvais le faire avec une boucle et re.search(), mais il ne fonctionne pas. Voici mon code:
import re
result = [['blablatè', 'blabla'], ['klak'], ['matwa', 'mat'], ['ma', 'mat'], ['ratif']]
rendp = "(atè|atwa|atif)$"
for row in result :
if re.search(rendp, row) == None :
result.remove(row)
joined = '\n'.join(' - '.join(map(str, row)) for row in result)
print(joined)
est ici l'erreur:
Traceback (most recent call last):
File "C:\Users\alice\OneDrive\Documents\Visual Studio 2017\Projects\CréoleDB\CréoleDB\CréoleDB.py", line 65, in <module>
if re.search(rendp, row) == None :
File "C:\Users\alice\Anaconda3\lib\re.py", line 182, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
Je pourrais vraiment utiliser un peu d'aide. Merci beaucoup !
L'erreur que vous voyez est parce que vous essayez de rechercher le modèle dans la liste intérieure. re.search ne fonctionne que lorsque vous recherchez un motif dans une chaîne. – suripoori