J'essaie de prendre une chaîne en entrée, comme une phrase, et de trouver tous les mots qui ont leur inverse dans la phrase. J'ai ceci jusqu'à présent :
s = "Although he was stressed when he saw his desserts burnt, he managed to stop the pots from getting ruined"
def semordnilap(s):
s = s.lower()
b = "!@#$,"
for char in b:
s = s.replace(char,"")
s = s.split(' ')
dict = {}
index=0
for i in range(0,len(s)):
originalfirst = s[index]
sortedfirst = ''.join(sorted(str(s[index])))
for j in range(index+1,len(s)):
next = ''.join(sorted(str(s[j])))
if sortedfirst == next:
dict.update({originalfirst:s[j]})
index+=1
print (dict)
semordnilap(s)
Cela fonctionne donc en grande partie, mais si vous l'exécutez, vous pouvez voir qu'il associe également "he" et "he" comme anagramme, mais ce n'est pas ce que je recherche. Si vous avez des suggestions sur la façon de corriger cela, et aussi s'il est possible de rendre le temps d'exécution plus rapide, si je devais entrer un grand fichier texte à la place.