Nous sommes le Lun 21 Juil, 2025 13:45
Supprimer les cookies

Rech. Logiciel pour gérer des listes

Pour une tâche précise, pour remplacer un logiciel propriétaire donné...

Sam 28 Oct, 2006 17:55

Bonjour,

Je vous expose ma demande:

J'ai une liste A de 1000 objets.
J'ai une liste B de 12 objets à exclure.
Je cherche un logiciel qui retire de la liste A les objets contenus dans la liste B s'ils sont présents.
Je suis preneur d'un logiciel libre ou d'une solution avec open office calc. J'ai trouvé une formule de tableur qui semblait le faire mais c'était sur Excel.

Merci.

Bruno
givo

Messages : 354
Géo : Montreuil (93)

Sam 28 Oct, 2006 21:44

Bonjour,

c'est assez facile à faire avec un langage de programmation.
En python, par exemple, ça donne:

#############
# -*- coding: Latin-1 -*-

A = ['orange', 'cerise', 'fraise', 'pomme', 'poire', 'banane']
B = ['fraise', 'poire']

C = [elt for elt in A if elt not in B]

print C
raw_input
##################
Le bout de code ci-dessus doit être mis dans un fichier nommé, par exemple, monProgramme.py

Python doit être installé (http://www.python.org/)

Il faut adapter le programme en fonction de la façon dont ta liste se présente exactement (format ?).
yves97

Messages : 56

Sam 28 Oct, 2006 21:46

Pardon, comme ça c'est mieux:

###################################
# -*- coding: Latin-1 -*-

# J'ai une liste A de 1000 objets.
# J'ai une liste B de 12 objets à exclure.
# Je cherche un logiciel qui retire de la liste A les objets contenus
# dans la liste B s'ils sont présents. Je suis preneur d'un logiciel
# libre ou d'une solution avec open office calc. J'ai trouvé une formule
# de tableur qui semblait le faire mais c'était sur Excel.

A = ['orange', 'cerise', 'fraise', 'pomme', 'poire', 'banane']
B = ['fraise', 'poire']

C = [elt for elt in A if elt not in B]

print C

raw_input('presser une touche pour terminer ')
########################################
yves97

Messages : 56

Sam 28 Oct, 2006 22:36

merci Yves mais ca va être dur de mettre mes 1000 mots sous cette forme.

Je t'avouerai que si je pouvais copier/coller ma liste directement dans un programme ou Ooo calc, ça m'arrangerait.

Autres propositions?

Merci.

bruno.
givo

Messages : 354
Géo : Montreuil (93)

Sam 28 Oct, 2006 22:59

Bon, je propose ceci.
1) copier la liste A dans un fichier nommé a.txt
Dans a.txt, on a:
orange
cerise
fraise
pomme
poire
banane
2) copier la liste B dans un fichier nommé b.txt
Dans b.txt, on a:
fraise
poire
3) installer python sur l'ordinateur (http://www.python.org/)
4) creer, dans le meme répertoire que a.txt et b.txt un fichier
monProgramme.py dans lequel on copie les lignes de code suivantes:
################
# -*- coding: Latin-1 -*-

A = open('a.txt','r').readlines()
B = open('b.txt','r').readlines()
C = [elt for elt in A if elt not in B]
open('c.txt','w').writelines(C)
##################
5) cliquer sur monProgramme.py
6) récupérer dans le répertoire le fichier c.txt qui devrait répondre au
cahier des charges.
yves97

Messages : 56

Sam 28 Oct, 2006 23:50

Dans le programme ci-dessus:
- la casse des caractères compte.
- un espace au bout d'un mot est significatif.
Il est possible d'éviter ça, mais il faut écrire quelques lignes de plus.
yves97

Messages : 56

Dim 29 Oct, 2006 02:39

Voici le programme, insensible à la casse et aux espaces:
################
# -*- coding: Latin-1 -*-

A = open('a.txt','r').readlines()
B = open('b.txt','r').readlines()
B1 = [elt.lower().strip() for elt in B]
C = [elt for elt in A if elt.lower().strip() not in B1]
open('c.txt','w').writelines(C)
##################
yves97

Messages : 56

Dim 29 Oct, 2006 08:40

Ta formule de tableur dans Excel, elle ne marche pas dans OpenOffice ?
serged

Avatar de l’utilisateur
Messages : 1300
Géo : Montrouge (92)

Lun 20 Nov, 2006 22:04

Ou beaucoup plus simplement dans n'importe quel interpréteur LISP (xLisp-Plus qui est libre par ex.) :

(set-difference '(A B C D) '(A B))

où A, B... sont les éléments à enlever de la liste qui contient A, B, C, D...

L'interpréteur donne la réponse directement

Voilà !

===========================================================
«Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp.» Greenspun's Tenth Rule of Programming
Dany cohen

Messages : 22

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit