Branches de langues et arborescence

Bonjour,
j'ai le code suivant pour traiter les branches des langues et j'ai eu des résultats avec des dupliques. voici le code que j'ai fait :
from bs4 import BeautifulSoup
import json
import os

"""Trouver les langues d'une branche"""
#variables
os.chdir("projet_Embarki/Embarki-Data/")
directory_name = "projet_Embarki/Embarki-Data/Branches/"
listBranches = os.listdir("Branches/")
file1=open("text.txt","w")
os.chdir("Branches/")
dico={}
for i in listBranches:
soup=BeautifulSoup(open(i).read(),"lxml")
finder=soup.find_all("a")
dico[i.replace(".html","")]={j.string for j in finder if j["href"].endswith("html")}
dico2={}
for i,j in dico.items():
for a,b in dico.items():
if j.issubset(b) and a!=i:
#print(i,a)
if a not in dico2:
dico2[a]=[i]
else: dico2[a].append(i)
dico3={}
for i,j in dico2.items():
dico3[i]=[{a:list(dico[a]) for a in j}]
file1.write("%s\n"%(i))
for k in j:
file1.write("\t%s\n\t\t%s\n"%(k,"\n\t\t".join(dico[k])))
os.chdir("..")
monFichier= open("branches.json", "w")
json.dump(dico3,monFichier)
monFichier.close()
file1.close()

comment je peut supprimer les résultats répétés sans avoir un résultats faux ?
voici un exemple de mon résultats :
Austronesian
Oceanic
HAWAIIAN
Oceanic
Austronesian
HAWAIIAN
East Malayo-Polynesian
Austronesian
HAWAIIAN
Oceanic
HAWAIIAN
merci :)

Configuration: Windows / Chrome 77.0.3865.120

3 réponses

  1. <gras>Bonjour, en fait ma mission est de normaliser une liste de langues et de branches de langues qui prennent le format html, il prend chaque langue et il la met sous la branche elle appartient, sauf que j'ai pas mal de cas où une langue se répete plusieurs fois sous plusieurs branches différentes : par exemple supposant que le programme m'affiche que le Français appartient à la famille indoueuropéénne et la famille sémitique aussi ce qui est faux. j'arrive pas a modifier dans ce code afin qu'il élémine les réseultats dupliqués et me rend un résultats correcte. j'ai fait le code suivant :

    from bs4 import BeautifulSoup
    import json
    import os

    """Trouver les langues d'une branche"""

    <os.chdir("projet_Embarki/Embarki-Data/") # le dossier qui contient les fichiers html
    directory_name = "projet_Embarki/Embarki-Data/Branches/"
    listBranches = os.listdir("Branches/")
    file1=open("text.txt","w")
    os.chdir("Branches/")
    dicctionnaire={}
    for i in listBranches:
    soup=BeautifulSoup(open(i).read(),"lxml")
    finder=soup.find_all("a")
    dictionnaire[i.replace(".html","")]={j.string for j in finder if j["href"].endswith("html")} # ce code est pour trouver un fichier qui s'appelle (href) et le modifier par un fichier que son nom se termine par html (pour que le programme puisse le trouver)
    dictionnaire2={}
    for i,j in dicctionnaire.items():
    for a,b in dicctionnaire.items():
    if j.issubset(b) and a!=i:
    #print(i,a)
    if a not in dicctionnaire2:
    dicctionnaire2[a]=[i]
    else: dicctionnaire2[a].append(i)
    dictionnaire3={}
    for i,j in dicctionnaire2.items():
    dicctionnaire3[i]=[{a:list(dico[a]) for a in j}]
    file1.write("%s\n"%(i))
    for k in j:
    file1.write("\t%s\n\t\t%s\n"%(k,"\n\t\t".join(dicctionnaire[k])))
    os.chdir("..")
    monFichier= open("branches.json", "w")
    json.dump(dicctionnaire3,monFichier)
    monFichier.close()
    file1.close() />

    en fin j'ai eu un réslutat comme suite :
    Austronesian : # branche de langue qui contient :
    Oceanic : #sous branche qui contient :
    HAWAIIAN : #langue
    Oceanic: # ici il considere cette sous branche comme une branche:
    Austronesian : #le contraire du 1er resultat
    HAWAIIAN: #langue
    East Malayo-Polynesian: #une branche
    Austronesian: #sous branche
    HAWAIIAN : une langue
    Oceanic: #branche
    HAWAIIAN : #cette langue par ex se répète pour la 4eme fois
    aidez moi svp et j'espère que j'ai bien expliqué !!
    <code><code>
    </code></code>
    merci :)
    0
    1. Contributeur
      comme tu peux le voir, le code que tu as posté est illisible. tu n'as pas correctement utilisé les balises de code.
      tu n'as que très partiellement appliqué mes suggestions en #2.
      0
    2. Désolé je ne maîtrise pas les codes dans ce site je vais essayer de poster des captures d'écran si possible merci
      0
    3. Contributeur
      @Ridanafirje te suggère de prendre le temps de maîtriser les balises de code sur ce site.
      tu n'as que très partiellement appliqué mes suggestions en #2.
      0
  2. Contributeur
    bonjour, pourrais-tu donner des noms explicites à tes variables, ajouter des commentaires pour expliquer ce que tu penses que ton programme fait, et ajouter des print() pour vérifier et nous montrer ce que fait ton programme?
    le résultat que tu donnes en exemple, est-ce le contenu d'un fichier? si oui, lequel?
    peux-tu également donner le contenu des fichiers lus par ton programme?
    0
    1. Bonjour,

      Essayer de comprendre un code Python présenté sans les indentations, c'est complètement vain.
      Pourriez-vous modifier votre message pour utiliser les balises <code python > afin d'avoir la coloration syntaxique ? (Les balises doivent encadrer le code source, et on les trouve sur le bouton à côté des boutons de mise en forme B I S au dessus de la zone de saisie)

      Merci,

      Xavier
      0