Conseil pour comparer le nombre de mots de deux fichiers texte (débutant)

Résolu/Fermé
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020 - 26 mai 2020 à 15:48
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020 - 26 mai 2020 à 20:55
Bonjour tout le monde,

Je cherche à comparer deux fichiers texte. J'aimerai, que pour chaque ligne de mes fichiers texte, puisse être comparé le nombre de mots. Mais je ne sais pas vraiment vers quel "outil" me diriger je m'y perds un peu entre les différents modules (expressions régulières, le Natural language toolkit) etc. Je viens de voir également que les listes pourraient m'être utiles. J'ai l'ouvrage de Swinnen pour m'aider mais je sais pas trop où chercher. Pour l'instant, j'arrive à compter le nombre de mots de tout mon fichier texte mais pas de chaque lignes. Voici le code :

f = open("a.txt", "r")
f2 = open ("b.txt", "r")
text1 = f.readlines()

number_of_words = 0
for line in text1:

line = line.strip("\n")

words = line.split()
number_of_words += len(words)
f.close()
print("words:", number_of_words)

text2 = f2.readlines()


Des idées ? Merci d'avance :)
A voir également:

4 réponses

yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 Ambassadeur 1 557
26 mai 2020 à 16:01
bonjour, quel résultat veux-tu précisément obtenir?
0
yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 Ambassadeur 1 557
26 mai 2020 à 16:02
avant tout, utilise les balises de code quand tu postes du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020
26 mai 2020 à 16:18
Autant pour moi, on peut pas éditer les messages ici ?

Imaginons mes deux fichiers textes :

L1txt1 : Comment ça va ?
L1txt2 : Tout va plutôt bien.

L2txt1 : Bien.
L2txt2 : D'accord.

Donc, je voudrais que pour chaque ligne de mes textes (ils sont plutôt longs) puisse être comparé le nombre de mots. Par exemple, pour les lignes 1 : Il y a trois mots pour txt1 et un mot pour txt2 ; un mot pour L2txt1, et un mot pour L2txt2. Et ainsi de suite pour toutes les lignes. Voilà :)
0
yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 1 557 > assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020
26 mai 2020 à 17:02
dans ce cas-là, pourquoi ne pas lire, ligne par ligne, dans les deux fichiers simultanément, et imprimer le résultat de la comparaison?
cela t'évite de mémoriser le nombre de mots de l'ensemble des lignes d'un fichier.
0
yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025 1 557 > assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020
26 mai 2020 à 17:04
je suppose que tu n'as pas essayé de faire un exemple correct, où les comparaisons correspondent au contenu des fichiers?
0
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020 > yg_be Messages postés 23416 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 janvier 2025
26 mai 2020 à 17:22
Oui je pense que ça serait mieux étant donné que mon texte est long ? (je retourne ta question en question haha) Avec un "with" par exemple ? J'ai bricolé ça mais bon le bidouillage en programmation....

with open("a.txt", "r") as f1, open("b.txt", "r") as f2:
    lines = f.readlines().split("\n") 
0
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020 > assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020
Modifié le 26 mai 2020 à 17:29
Oui j'ai donné un exemple au hasard. Bon du coup ça a fonctionné en enlevant le split. Mais est-ce que c'est bien ce que tu avait proposé de faire ?
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
26 mai 2020 à 16:53
Bonjour assange337,

Déjà, il faut compter les mots par ligne, et non pas les additionner tous :

f = open("a.txt", "r")

text1 = f.readlines()

number_of_words = {}
n=0
for line in text1:
	line = line.strip("\n")
	words = line.split()
	number_of_words[n] = len(words)
	n+= 1
f.close()

for k in range (n):
	print("words line {:d} : {:d}".format(k+1,number_of_words[k]))
0
assange337 Messages postés 11 Date d'inscription mardi 12 mai 2020 Statut Membre Dernière intervention 26 mai 2020
26 mai 2020 à 17:10
Merci c'est pas mal ! Par contre j'ai l'impression que les points d'interrogation sont compris comme des mots
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
26 mai 2020 à 17:04
il y a plein de possibilités en fait ...
0