Pour la résolution des anagrammes, il nous faut une liste de mots, ou mieux, une liste exhaustive des mots de la langue française de 3 à 7 lettres. Après quelques recherches, je n’ai pas réussi à mettre la main sur un tel fichier, mais par chance, je suis tombé sur le blog d’une personne ayant les mêmes besoins que les miens : Wouf. J’ai décidé d’utiliser son code comme point de départ pour créer le fichier nécessaire à mon but : le badge d’Académicien dans le « Jardin des mots » !
L'article de Wouf sur ce sujet : https://blog.site2wouf.fr/2018/12/un-lexique-genre-ods7-en-txt.html
Site source contenant les mots : https://www.listesdemots.net/
Pour que le code de Wouf fonctionne, il faut, au préalable, avoir installé les modules suivant : beautifulsoup4, requests et html5lib. Avec les commandes :
- pip install beautifulsoup4
- pip install requests
- pip install html5lib
#wouf 2018 (py3.6.4) #http://site2wouf.fr #Pour créer dico.txt #Qui contient un lexique basé sur #ODS7 #En scollant le site : listesdemots.net #requis :l beautifulsoup4 #(cmd : pip install beautifulsoup4) import requests from bs4 import BeautifulSoup fichier = open("dico.txt", "w") # Initialisation: url="https://www.listesdemots.net/touslesmots" requete = requests.get(str(url+".htm")) #page1 print(requete.url) page = requete.content soup = BeautifulSoup(page,features="html5lib") span = soup.find("span", {"class": "mot"}) mots=span.string.strip() lesmots=mots.split(" ") for l in lesmots: fichier.write(l+"\n") print("|",end="") print() print("page 1 : OK ("+str(len(lesmots))+")") totalmot=len(lesmots) fichier.close() #page 2 à 8998: for i in range(2,899): fichier = open("dico.txt", "a") lurl=url+"page"+str(i)+".htm" ok=False while not ok: try: requete = requests.get(lurl,timeout=1) ok=True except: print("Problème de connexion. Je recommence !") print(requete.url) page = requete.content soup = BeautifulSoup(page,features="html5lib") span = soup.find("span", {"class": "mot"}) mots=span.string.strip() lesmots=mots.split(" ") for l in lesmots: fichier.write(l+"\n") print("|",end="") totalmot+=len(lesmots) print() print("page "+str(i)+" : OK ("+str(len(lesmots))+"/"+str(totalmot)+")") fichier.close() #fin du scipt: print("mots :",totalmot)
Grâce à Wouf, nous voici en possession d’un fichier comportant plus de 400000 mots de la langue française. La prochaine étape sera de ne garder que les mots qui nous intéressent, et les mettre sous une forme rapidement attaquable pour nos besoins.
Merci pour le lien 😉
wouf