Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1513 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  extraire sous-chaines + module re

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

extraire sous-chaines + module re

n°642866
Profil sup​primé
Posté le 14-02-2004 à 19:27:42  answer
 

débutant sous python
j' ai des données à extraire dans des chaînes, j' ai regardé du coté du module 're', mais je bloques,  
 
j' ai une liste de chaînes ex:


modutils-2.4.25
texinfo-4.5
mpg123-0.59s-r1
development-sources-2.6.2


 
je veux seulement pouvoir récupérer le nom du package avec sa version à part.
 
Vous aurez sans doute compris que la difficulté c' est la possibilité d' avoir plusieurs '-' ou des sous-chaines 'rc' dans la version du soft.
 
juste un petit coup de main si vous voulez pas me donner la réponse, là j' avance plus. ( m' en faut pas beaucoup  :sweat: )

mood
Publicité
Posté le 14-02-2004 à 19:27:42  profilanswer
 

n°642960
Profil sup​primé
Posté le 14-02-2004 à 23:25:49  answer
 

he ben j' ai trouvé un petit truc mais bon..
on se moque pas  :o  
 

Code :
  1. lst = ['modutils-2.4.25', 'development-sources-2.6.2', 'texinfo-4.5', 'mpg123-0.59s-r1']
  2. for elem in lst:
  3.     m = re.compile('-(\d+)')
  4.     a = m.split(elem)
  5.     print elem, a


 
ce qui donne ça :
 

modutils-2.4.25    ['modutils', '2', '.4.25']
development-sources-2.6.2    ['development-sources', '2', '.6.2']
texinfo-4.5    ['texinfo', '4', '.5']
mpg123-0.59s-r1    ['mpg123', '0', '.59s-r1']


 
c' est pas génial hein  :D  ?
j' ai vraiment du mal avec les regexp, j' aimes pas du tout  
personne pour un truc plus propre  :whistle:

n°642993
Taz
bisounours-codeur
Posté le 14-02-2004 à 23:53:43  profilanswer
 

euh faut voir en fait, parce que si y a forcément un séparateur - entre la version et le nom, ça peut aller très vite
 
la vérité, c'est que les lettres dans les numéros de version foutent le bordel, je pense que c'est indécidable

n°642997
Taz
bisounours-codeur
Posté le 14-02-2004 à 23:55:08  profilanswer
 

tu les choppes ou t'es données ?

n°643011
Profil sup​primé
Posté le 15-02-2004 à 00:05:44  answer
 

toutes ces données c' est des noms de dossiers qui représentent
tous mes packages installés.
 
alors par contre j' ai la possibilité de récupérer les noms(seulement) des packages qui sont dans un fichier,
 
mais pour la version je suis obligé de passer par ces dossiers.
 

n°643016
Profil sup​primé
Posté le 15-02-2004 à 00:07:47  answer
 

non je dis une bêtise, dans le fichier il y a pas tous les packages.
donc ça marche pas

n°643018
Taz
bisounours-codeur
Posté le 15-02-2004 à 00:08:55  profilanswer
 

tu veux pas donner toutes les données du problèmes ? pourquoi, d'ou viennent les données, etc, avec toutes les précisions possible

n°643021
Profil sup​primé
Posté le 15-02-2004 à 00:18:38  answer
 

ok alors sous gentoo quand on installe un paquet il crée un dossier dans /var/db/pkg/X/ portant le nom du paquet.
ds ce dossier il y a juste quelques fichiers utiles pour portage
c' est tout.
 
Edit: X représente une catégorie.
 
 
alors ex: pour la catégorie app-admin pour l' instant j' ai 5 dossiers qui correspondent à ceux là
 

chkrootkit-0.41-r1
fam-2.7.0
gkrellm-2.1.24
pydf-0
syslog-ng-1.6.0_rc3-r1


 
le but c' est de pouvoir lister tous les paquets que j' ai installé sur ma machine par catégorie en donnant des informations notemment la version.
 
tu veux savoir quoi d' autre, désolé si je suis pas clair je fatigue.
 
merci de ton aide en tous les cas


Message édité par Profil supprimé le 15-02-2004 à 00:27:20
n°643023
Profil sup​primé
Posté le 15-02-2004 à 00:25:33  answer
 

donc pour récupérer ces données en fait je liste le contenu de  
/var/db/pkg/X/ pour chaque catégories.
 

Code :
  1. DB_PKGS = '/var/db/pkg/'
  2. def Cat_Installed():
  3.     """return une liste des différentes catégories de logiciels
  4.         installés sur le systèm."""
  5.    
  6.     cats = os.listdir(DB_PKGS)
  7.     cats.sort()
  8.     return cats
  9. def Soft_Installed(cat):
  10.     """return un dico ayant comme clès, les cats installées
  11.         et comme valeur une liste des logiciels installés faisant partis des cat"""
  12.    
  13.     dico = {}
  14.    
  15.     for elem in cat:
  16.         dico[elem] = os.listdir(DB_PKGS + elem)
  17.         # Si une catégorie ne contient aucun logiciels, on la supprime.
  18.         if not dico[elem]:
  19.             del dico[elem]
  20.    
  21.     # net-dialup': ['ppp-2.4.1-r14', 'rp-pppoe-3.5']
  22.     return dico


n°643056
Profil sup​primé
Posté le 15-02-2004 à 02:09:18  answer
 

Code :
  1. lst = ['modutils-2.4.25', 'development-sources-2.6.2', 'texinfo-4.5', 'mpg123-0.59s-r1']
  2. for elem in lst:
  3.     #m = re.search('(?<=-)\d+', elem)
  4.    
  5.     m = re.compile('-(\d.*$)')
  6.     a = m.search(elem)
  7.     print '%s    %s' % (a.group(1), elem)


 
ce qui donnes:
 

2.4.25    modutils-2.4.25
2.6.2    development-sources-2.6.2
4.5    texinfo-4.5
0.59s-r1    mpg123-0.59s-r1


 
ça à l' air d' etre bon
 
ça bloquerait par contre seulement si le nom du soft contiendrait
un tiret suivi de chiffres, ce qui est à mon avis assez rare, mais possible  [:airforceone]  
 
ex: to-69to
avec la version:
ex: to-69to-0.1
 
m' enfin bon ..  :sleep:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  extraire sous-chaines + module re

 

Sujets relatifs
[vba] extraire une date - [resolu]Nombre d'occurence entre 2 chaines
comment installer le module RRDTOOL?Extraire le contenu binaire d'un fichier vers une chaine de caracteres
[PERL] Perl et module PHP[PHP] Marrant ca : session_start() => Failed to init. storage module
[VB] Communication avec un module I2CSQL - Extraire une partie d'une valeur
problème avec un switch et les chaines de caractère !!Pointer sur un tableau de chaînes
Plus de sujets relatifs à : extraire sous-chaines + module re


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR