Mots en commun entre 10 fichiers .txt
Résolu/Fermé
CarlosMedina
-
Modifié le 12 juil. 2020 à 16:25
jee pee Messages postés 40509 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 30 novembre 2024 - 12 juil. 2020 à 19:44
jee pee Messages postés 40509 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 30 novembre 2024 - 12 juil. 2020 à 19:44
A voir également:
- Rechercher un mot dans plusieurs fichiers txt
- Rechercher ou entrer l'adresse - Guide
- Renommer plusieurs fichiers - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Rechercher un mot dans word - Guide
6 réponses
Grand Grand Grand Merci M3NSONG3 pour ton aide, ta spontanéité et ta patience.
Ça marche parfaitement.
Ça marche parfaitement.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
12 juil. 2020 à 08:28
12 juil. 2020 à 08:28
bonjour,
peux-tu préciser "python" quand tu utilises les balises de code?
avant de programmer, je suggère que tu réfléchisses à quelle méthode tu choisis d'utiliser pour résoudre ce problème.
décris-nous cette méthode.
peux-tu préciser "python" quand tu utilises les balises de code?
avant de programmer, je suggère que tu réfléchisses à quelle méthode tu choisis d'utiliser pour résoudre ce problème.
décris-nous cette méthode.
Salut,
1- Je prends le premier mot de 1.txt [ liste1 = content1.split() ]
2- je teste s'il existe dans 2.txt [ liste2 = content2.split() ]
3- si oui, est-il déjà dans la listeMotsCommuns=[] sinon je le rajoute
4- je vais en 1- en passant au 2eme mot
5- fin de fichier 2.txt je passe à 3.txt (ainsi de suite jusqu'à 10.txt)
6- j'écris ma listeMotsCommuns=[] dans fichier output.txt
1- Je prends le premier mot de 1.txt [ liste1 = content1.split() ]
2- je teste s'il existe dans 2.txt [ liste2 = content2.split() ]
3- si oui, est-il déjà dans la listeMotsCommuns=[] sinon je le rajoute
4- je vais en 1- en passant au 2eme mot
5- fin de fichier 2.txt je passe à 3.txt (ainsi de suite jusqu'à 10.txt)
6- j'écris ma listeMotsCommuns=[] dans fichier output.txt
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
Modifié le 12 juil. 2020 à 16:26
Modifié le 12 juil. 2020 à 16:26
Bonjour,
Ton programme fonctionne bien avec en dur 2 fichiers.
Avec 10 il faut comparer :
liste1 à liste2 à 10
liste2 à liste3 à 10
..
liste9 à liste10
On voit alors qu'il faut 2 boucles imbriquées. Et pour ne pas avoir à traiter des noms de liste en dur, il semble que charger les données initiales dans une liste 2D pourrait se prêter à la génération des 2 boucles.
Cette liste 2D serait du genre listeMot=
ps : j'ai changé ta balise code en code python dans la question
Ton programme fonctionne bien avec en dur 2 fichiers.
Avec 10 il faut comparer :
liste1 à liste2 à 10
liste2 à liste3 à 10
..
liste9 à liste10
On voit alors qu'il faut 2 boucles imbriquées. Et pour ne pas avoir à traiter des noms de liste en dur, il semble que charger les données initiales dans une liste 2D pourrait se prêter à la génération des 2 boucles.
Cette liste 2D serait du genre listeMot=
[['11111', 'AZZZ'], ['22222', 'aaaaa', 'bbbbb', 'cccc'], ['3333', 'TFTFT', 'aaaaa', 'DDDD', 'EEEE'], ['444444444', 'FFFFFFFFFFFF', 'PP', 'zzz'], ['55555', 'VVVVVVVV', 'RRRRR'], ['66666', 'BBB', 'JJJ', 'KKK', 'DDDD', 'EEE'], ['777', 'UUUU', 'I', 'III', 'O'], ['8888', 'OOOOO', 'PP', 'LLLLL', 'EEE'], ['999999', 'aaa', 'bbbb', 'ccc', 'DDDD', 'EEE', 'aaaaa', 'bbbbb', 'cccc', 'KLKLKL'], ['KLKLKL', 'FTFT', 'TFTFT', '100000000', 'FFFFFFFFFFFF']]
ps : j'ai changé ta balise code en code python dans la question
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
>
CarlosMedina
Modifié le 12 juil. 2020 à 17:34
Modifié le 12 juil. 2020 à 17:34
pas clair "Un mot, pour faire partie du Dico doit être présent dans les 10 documents" ce serait alors tous les mots de tous les fichiers, ou un mot présent dans chacun des 10 fichiers, ou encore un mot présent dans au moins 2 ?
CarlosMedina
>
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
12 juil. 2020 à 18:01
12 juil. 2020 à 18:01
Présent dans 10 en même temps.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
12 juil. 2020 à 19:30
12 juil. 2020 à 19:30
plutôt que de faire deux boucles imbriquées, je créerais une liste avec le contenu du premier fichier, et, pour chacun des autres fichiers, j'éliminerais de cette liste les entrées non présentes dans le fichier.
jee pee
Messages postés
40509
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
30 novembre 2024
9 438
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
12 juil. 2020 à 19:44
12 juil. 2020 à 19:44
La plus grande difficulté des questions, ce n'est pas toujours le code, mais la question elle même. Là j'étais sur au moins 2 fois dans l'un des 10 fichiers, Effectivement dans les 10, l’exclusion s'impose plus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
M3NSONG3
Messages postés
615
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
4 novembre 2021
162
Modifié le 12 juil. 2020 à 17:43
Modifié le 12 juil. 2020 à 17:43
Ok... Bon si on résume.
tu dois lire le contenu de chaque fichier... et enregistrer chaque mot dans une liste. Ensuite tu dois trouver les mots présents dans ces 10 mêmes listes. Bon bah y'a plus qu'à faire ça :
Bon courage pour la suite ;) Si besoin je continue de suivre le sujet si tu ne comprends pas mon code...
(Common est une liste avec les mots en commun de tous les fichiers 1.txt, 2.txt [...] 10.txt)
tu dois lire le contenu de chaque fichier... et enregistrer chaque mot dans une liste. Ensuite tu dois trouver les mots présents dans ces 10 mêmes listes. Bon bah y'a plus qu'à faire ça :
files_content = [] # On lit chaque fichiers : for i in range(1, 11): with open(f"{i}.txt", "r") as file: files_content.append(file.read().split()) common = set.intersection(*map(set,files_content))
Bon courage pour la suite ;) Si besoin je continue de suivre le sujet si tu ne comprends pas mon code...
(Common est une liste avec les mots en commun de tous les fichiers 1.txt, 2.txt [...] 10.txt)
M3NSONG3
Messages postés
615
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
4 novembre 2021
162
>
CarlosMedina
12 juil. 2020 à 18:29
12 juil. 2020 à 18:29
Elle est bien séparée du reste par des espaces ? J'ai compris qu'on cherchait des mots (donc séparés par des espaces ou des sauts de ligne).
J'ai beau essayé de mettre ta chaine dans tous les sens dans mes fichiers testes... Cela marche.
Peux-tu me montrer comment tu as implémenter mon code et me montrer les fichiers que tu essayes de lire pour voir un peu la structure qu'ils ont ? (Au moins un extrait représentatif)
J'ai beau essayé de mettre ta chaine dans tous les sens dans mes fichiers testes... Cela marche.
Peux-tu me montrer comment tu as implémenter mon code et me montrer les fichiers que tu essayes de lire pour voir un peu la structure qu'ils ont ? (Au moins un extrait représentatif)
L'un de mes textes:
Comment j'ai implémenté votre code:
accueil
accueil>
accès
afin
agence
ancestraux.
ancien
anciennes
années
ans
appartenant
architecture
aristocrates
articles
aspects
atmosphère
attestent
au
authentiques
autour
avec
bien
boutique-hôtel
catalogue
ce
central
ces
cette
chacune
chambres
chambres:
charme
chic
ci-dessous
comment
confidentialité
constituent
constituer
contacter
contacts
correspondant
célèbres
cœur
dans
datent
de
demeures
depuis
derrière
des
design
dix-sept
donc
découvrir
désormais
développement
d’hotes
d’hôtels
d’hôtes
d’immobilier
d’investissement
d’un
d’une
el
email:
emblématique
en
encore
enthousiasme
envoûtante
essaouira
est
et
exceptionnel
exploité
exploré
exquis
face
faire
fait
figurent
fr
genre
gsm:
haut
havres
historique.
hôtel
ils
immobilier
immobilière
immobilière
immédiat
jardin
jardins
jemaa
la
labyrinthe
le
les
lieux
luxe
luxueuses
luxuriant
légendaires
l’un
l’époque
m
m2
magiques
magnifique
magnifiques
maison
marché.
mode
m²
médina
navigation
ne
non
notre
nous
occupants
opportunités
organisées
où
page
paix
palais
par
pas
passion
patio
patriciennes
place
plus
pour
probablement
propos
propriété
propriétés
proximité
présentant
quatre
qui
qu’ils
raffinée
raisons
rare
ravis
recevoir
recherche
restauré
rouge
ruelles
référence
rénovation
rénover
rénover
rénové
rénovées
rénovés
résidentiel
sa
savoir-faire
service
ses
site
sites
soigneusement
soin
sol
sold
sommes
son
sont
spectaculaire
succès
suites
suivante
superbe
sur
séduit
sélection
sélectionnées
traditionnelle
trépidante.
témoignages
témoins
un
une
unique
vaste
vastes
vendre
vendre
vente
veuillez
vie
vieille
villas
ville
vingt-six
votre
vous
véhicules
zzzzzzzzzzz6
à
élément
érigée
étroites
été
être
Comment j'ai implémenté votre code:
f1 = open("1.txt", 'r') f2 = open("2.txt", 'r') f3 = open("3.txt", 'r') f4 = open("4.txt", 'r') f5 = open("5.txt", 'r') f6 = open("6.txt", 'r') f7 = open("7.txt", 'r') f8 = open("8.txt", 'r') f9 = open("9.txt", 'r') f10 = open("10.txt", 'r') content1 = f1.read() content2 = f2.read() content3 = f3.read() content4 = f4.read() content5 = f5.read() content6 = f6.read() content7 = f7.read() content8 = f8.read() content9 = f9.read() content10 = f10.read() liste1 = content1.split() liste2 = content1.split() liste3 = content1.split() liste4 = content1.split() liste5 = content1.split() liste6 = content1.split() liste7 = content1.split() liste8 = content1.split() liste9 = content1.split() liste10 = content1.split() f1.close() f2.close() f3.close() f4.close() f5.close() f6.close() f7.close() f8.close() f9.close() f10.close() files_content = [] # On lit chaque fichiers : for i in range(1, 11): with open(f"{i}.txt", "r") as file: files_content.append(file.read().split()) common = set.intersection(*map(set,files_content)) print (common)
M3NSONG3
Messages postés
615
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
4 novembre 2021
162
12 juil. 2020 à 18:57
12 juil. 2020 à 18:57
Pour le coup, le contenu avant mon code ne sert pas à grand chose...
Juste mon code suffira !
Par contre je ne comprends pas... J'ai beau testé avec ton fichier et en refaire des autres de la même façons, de mon côté ça marche très bien...
Essaye peut-être d'ouvrir les fichiers en utf-8 en modifiant cette ligne :
Faire un fichier comme celui-ci suffira pour ce que tu veux faire, ton code d'avant n'est pas utile :
Juste mon code suffira !
Par contre je ne comprends pas... J'ai beau testé avec ton fichier et en refaire des autres de la même façons, de mon côté ça marche très bien...
Essaye peut-être d'ouvrir les fichiers en utf-8 en modifiant cette ligne :
with open(f"{i}.txt", "r", encoding="utf-8") as file:
Faire un fichier comme celui-ci suffira pour ce que tu veux faire, ton code d'avant n'est pas utile :
#!/usr/bin/env python files_content = [] for i in range(1, 4): with open(f"{i}.txt", "r", encoding="utf-8") as file: files_content.append(file.read().split()) common = set.intersection(*map(set, files_content)) print(common)