IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire les caractères un par un d'une chaîne unicode


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Lire les caractères un par un d'une chaîne unicode
    Bonjour,
    J'utilise un logiciel de mixage vidéo (modul8 de garagecube) qui permet de creer des modules supplémentaires en python et de les partager avec les autres utilisateurs.
    J'ai donc "bidouillé" quelques modules, sans vraiment savoir s'il y a des différences fondamentales avec le java que je maîtrise un peu.
    J'ai beau parcourir le web mais je n'arrive pas à écrire un petit algo qui à la base me paressé anodin.
    La finalité pour l'utilisateur du logiciel de mixage vidéo est la suivante :
    Avec le freeware "pipette", l'utilisateur capture le code hexa de la couleur qui l'intéresse. Il s'agit alors de faire un copié collé de ce code dans le nouveau module du logiciel. Le script récupère alors une chaine unicode (utf-8 me semble t-il). Je voudrais alors identifier les caractères un par un. Existe t-il une fonction permettant de traiter les caractères d'une chaîne un par un ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Tu peux parcourir les chaînes unicode comme des listes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine = u"La chaîne"
    for c in chaine:
      print c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    chaine = u"La chaîne"
    i = 0
    while i<len(chaine):
      print chaine[i]
      i += 1

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Conversion chaine unicode représentant un code couleur hexa vers code rgb
    Bonjour,
    La réponse de Nicolous m'a permis de coder la conversion de la chaine unicode (représentant un code couleur hexa) vers un entier décomposé ensuite en trois entiers (composantes rouge vert bleu).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    	saisieCode = param['text']
    	i = 0
    	intCode = 0
    	intTotalCode=0
    	while i<len(saisieCode):
     
    		if saisieCode[i] == u'0':
    			intCode = 0
    		elif saisieCode[i] == u'1':
    			intCode = 1
    		elif saisieCode[i] == u'2':
    			intCode = 2
    		elif saisieCode[i] == u'3':
    			intCode = 3
    		elif saisieCode[i] == u'4':
    			intCode = 4
    		elif saisieCode[i] == u'5':
    			intCode = 5
    		elif saisieCode[i] == u'6':
    			intCode = 6
    		elif saisieCode[i] == u'7':
    			intCode = 7
    		elif saisieCode[i] == u'8':
    			intCode = 8
    		elif saisieCode[i] == u'9':
    			intCode = 9
    		elif saisieCode[i] == u'A' or saisieCode[i] == u'a':
    			intCode = 10
    		elif saisieCode[i] == u'B' or saisieCode[i] == u'b':
    			intCode = 11
    		elif saisieCode[i] == u'C' or saisieCode[i] == u'c':
    			intCode = 12
    		elif saisieCode[i] == u'D' or saisieCode[i] == u'd':
    			intCode = 13
    		elif saisieCode[i] == u'E' or saisieCode[i] == u'e':
    			intCode = 14
    		elif saisieCode[i] == u'F' or saisieCode[i] == u'f':
    			intCode = 15
    		else:
    			intCode = 0
    		intTotalCode = intTotalCode*16 + intCode
    		i += 1
    	blue = intTotalCode & 0xFF
    	green = (intTotalCode & 0xFF00) >> 8
    	red = (intTotalCode & 0xFF0000)  >> 16
    	print 'rgb: ', red, green, blue

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai revu ma copie suivant la remarque de Guigui_
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	saisieCode = param['text']
    	i = 0
    	j = 1
    	while (i+1)<len(saisieCode) and j!=4 :
    		if ((saisieCode[i] >= u'0' and saisieCode[i] <= u'9') or (saisieCode[i] >= u'A' and saisieCode[i] <= u'F') or (saisieCode[i] >= u'a' and saisieCode[i] <= u'f')) and ((saisieCode[i+1] >= u'0' and saisieCode[i+1] <= u'9') or (saisieCode[i+1] >= u'A' and saisieCode[i+1] <= u'F') or (saisieCode[i+1] >= u'a' and saisieCode[i+1] <= u'f')) :
    			if j == 1 :
    				red = int(saisieCode[i] + saisieCode[i+1], 16)
    			elif j == 2 :
    				green = int(saisieCode[i] + saisieCode[i+1], 16)
    			elif j == 3 :
    				blue = int(saisieCode[i] + saisieCode[i+1], 16)
    			i += 2
    			j +=1
    		else:
    			i += 1
    			j = 1
    			blue = 0
    			green = 0
    			red = 0
    	if j == 4 :
    		print 'rgb: ', red, green, blue
    De cette manière je peux retrouver un code couleur type hexa n'importe où dans la chaine unicode.
    Qu'en pensez-vous ?
    Je peux expliciter certains points...

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/09/2008, 11h54
  2. Réponses: 6
    Dernier message: 11/05/2007, 21h51
  3. Réponses: 2
    Dernier message: 11/12/2006, 14h14
  4. Réponses: 5
    Dernier message: 26/11/2006, 17h32
  5. Réponses: 3
    Dernier message: 14/04/2006, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo