Supprimer des doublons de morceaux de chaines de caracteres

steppi26 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   -

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

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

0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 

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