Supprimer des doublons de morceaux de chaines de caracteres

Fermé
steppi26 Messages postés 3 Date d'inscription jeudi 23 avril 2015 Statut Membre Dernière intervention 24 août 2022 - Modifié le 11 août 2022 à 15:23
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 11 août 2022 à 15:22

Bonjour,

Je débute en Python , et je cherche à supprimer les doublons qui apparaissent dans des chaînes de caractères. Mais ce sont des morceaux de chaîne que je veux retirer, pas juste de simples caractères. Et je galère, je ne trouve pas...

Voici mon code jusque là :

contenu = fichier.read()
liste = contenu.split()                 
longueurtotale = liste.__len__()                     
print(longueurtotale)
chariot=42
print(liste[chariot]) 
print(liste[longueurtotale-chariot]) 
print(liste[0:chariot])

print(liste[1:chariot+1])
print(liste[2:chariot+2])
print(liste[3:chariot+3])
# chercher à ecrire: si (liste[1:chariot+1])==(liste[2:chariot+2]), alors effacer (liste[2:chariot+2])

Résultat :

['mon', 'texte', 'a', 'defricher', 'une', 'idée', 'lointaine', ';des', 'rapports', 'de', 'que', 'la', 'réalité', 'tels', 'que', 'le', 'pouvoir,', 'par', 'divers', 'moyens,', 'mais', 'vivons-nous', 'Et', 'je', 'voudrais', 'ajouter', 'à', 'cela', 'les', 'rapports', 'de', 'pouvoir', 'que', 'la', 'réalité', 'comporte,', 'selon', 'divers', 'moyens,', 'et', 'montre,', 'mais']
['texte', 'a', 'defricher', 'une', 'idée', 'lointaine', ';des', 'rapports', 'de', 'que', 'la', 'réalité', 'tels', 'que', 'le', 'pouvoir,', 'par', 'divers', 'moyens,', 'mais', 'vivons-nous', 'Et', 'je', 'voudrais', 'ajouter', 'à', 'cela', 'les', 'rapports', 'de', 'pouvoir', 'que', 'la', 'réalité', 'comporte,', 'selon', 'divers', 'moyens,', 'et', 'montre,', 'mais', 'dont']
['a', 'defricher', 'une', 'idée', 'lointaine', ';des', 'rapports', 'de', 'que', 'la', 'réalité', 'tels', 'que', 'le', 'pouvoir,', 'par', 'divers', 'moyens,', 'mais', 'vivons-nous', 'Et', 'je', 'voudrais', 'ajouter', 'à', 'cela', 'les', 'rapports', 'de', 'pouvoir', 'que', 'la', 'réalité', 'comporte,', 'selon', 'divers', 'moyens,', 'et', 'montre,', 'mais', 'dont', 'chacun']
['defricher', 'une', 'idée', 'lointaine', ';des', 'rapports', 'de', 'que', 'la', 'réalité', 'tels', 'que', 'le', 'pouvoir,', 'par', 'divers', 'moyens,', 'mais', 'vivons-nous', 'Et', 'je', 'voudrais', 'ajouter', 'à', 'cela', 'les', 'rapports', 'de', 'pouvoir', 'que', 'la', 'réalité', 'comporte,', 'selon', 'divers', 'moyens,', 'et', 'montre,', 'mais', 'dont', 'chacun', 'n’a']

Est-ce que quelqu'un saurait me guider vers les modules appropriés ?

Merci

A voir également:

2 réponses

yg_be Messages postés 22778 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 11 mai 2024 1 481
10 août 2022 à 16:57

bonjour,

le point de départ, je pense, c'est de décrire le résultat attendu.

0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
Modifié le 11 août 2022 à 15:31

Bonjour,

En complément à la question posée par yg_be, il faut indiquer en plus de ce que le programme doit retourner ce que ton fichier contient. À quoi correspond chariot dans ton code ?

Admettons que ton fichier contienne :

mon texte a defricher une idée lointaine ;
des rapports de que la réalité tels que le pouvoir, par divers moyens, mais vivons-nous
Et je voudrais ajouter à cela les rapports de pouvoir que la réalité comporte, selon divers moyens, et montre, mais

Si le but est de conserver chaque mot de sorte à ce qu'il n'apparaisse qu'en un exemplaire, tu peux écrire :

# -*- coding: utf-8 -*-

with open("fichier.txt", "r") as f:
    mots = f.read().split()
    
print(set(mots))

Si tu veux conserver l'ordre d'apparition des mots :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

with open("fichier.txt", "r") as f:
    mots = f.read().split()
    
s = set()
res = list()
for mot in mots:
    if mot not in s:
        res.append(mot)
        s.add(mot)
print(res)

Bonne chance

0