Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2014, à 17:20

one_more_time_

problème de variables en bash mais aussi en python

Bonjours à tous et toutes.

Je rencontre un problème étonnant avec mes variables string en bash mais aussi en python:

voici un bout de mon code en python

var1="1234"
var2="5678"
var3="9101112"

concatenation=var1+var2+var3
print(concatenantion)

resultat

 
1234
5678
9101112

alors que je devrais avoir:

123456789101112

J'ai découvert que à la fin de chaque variable j'ai ces caractères \r\n qui s'ajoute automatiquement,ce qui explique le saut de ligne.
Je ne comprend pas pourquoi mais ça a commencer après avoir utiliser la commande echo -e "\r$variable\c"  dans un script bash.
Depuis cela,j'ai ce problème en bash et même en python.

Quelqu'un a une idée ?

Merci pour votre aide.

Dernière modification par one_more_time_ (Le 22/03/2014, à 17:21)

Hors ligne

#2 Le 22/03/2014, à 17:26

fabkzo

Re : problème de variables en bash mais aussi en python

Salut,

Ca ne viendrait pas d'une option de ton éditeur de texte ?


pinterest ==> fabkzo!
Python beginner on Rpi
http://www.fabkzo.com

Hors ligne

#3 Le 22/03/2014, à 17:36

one_more_time_

Re : problème de variables en bash mais aussi en python

merci pour ta réponse je n' y avais même pas pensée.
Mais tout me semble en ordre dans les préférences de gedit .
Pour être totalement certain j'ai essayer d'écrire le script avec nano ,ce qu'il me donne le même résultat.

Le mystère plane toujours.

Dernière modification par one_more_time_ (Le 22/03/2014, à 17:37)

Hors ligne

#4 Le 22/03/2014, à 17:46

one_more_time_

Re : problème de variables en bash mais aussi en python

Et voici comment je me suis aperçut du phénomène:

var1="1234"
var2="5678"
var3="9101112"

concatenation=(var1,var2,var3)
print(concatenantion)

résultat :

('1234\r\n', '5678\r\n', '9101112\r\n')

on peut voir à la fin de chaque contenue de variable que les caractères \r\n sont présent alors qu'ils ne devraient pas l’être.
Cela me pose un véritable problème car je dois concaténer ces 3 variables afin de créer un hash Md5, dans l’état actuel des choses mon hash md5 est faux !

Dernière modification par one_more_time_ (Le 22/03/2014, à 17:50)

Hors ligne

#5 Le 22/03/2014, à 17:53

pingouinux

Re : problème de variables en bash mais aussi en python

Bonjour,
Pour en avoir le cœur net :

hd ton_script_python

Hors ligne

#6 Le 22/03/2014, à 18:05

one_more_time_

Re : problème de variables en bash mais aussi en python

resultat du hd test

hash$ hd teste
00000000  23 21 2f 75 73 72 2f 62  69 6e 2f 70 79 74 68 6f  |#!/usr/bin/pytho|
00000010  6e 0a 0a 69 6d 70 6f 72  74 20 6f 73 0a 69 6d 70  |n..import os.imp|
00000020  6f 72 74 20 68 61 73 68  6c 69 62 0a 74 61 62 6c  |ort hashlib.tabl|
00000030  65 61 75 31 20 3d 20 6f  70 65 6e 28 27 41 27 2c  |eau1 = open('A',|
00000040  20 27 72 27 29 2e 72 65  61 64 6c 69 6e 65 73 28  | 'r').readlines(|
00000050  29 0a 74 61 62 6c 65 61  75 32 20 3d 20 6f 70 65  |).tableau2 = ope|
00000060  6e 28 27 42 27 2c 20 27  72 27 29 2e 72 65 61 64  |n('B', 'r').read|
00000070  6c 69 6e 65 73 28 29 0a  74 61 62 6c 65 61 75 33  |lines().tableau3|
00000080  20 3d 20 6f 70 65 6e 28  27 43 27 2c 20 27 72 27  | = open('C', 'r'|
00000090  29 2e 72 65 61 64 6c 69  6e 65 73 28 29 0a 0a 66  |).readlines()..f|
000000a0  6f 72 20 65 6c 65 6d 65  6e 74 31 20 69 6e 20 74  |or element1 in t|
000000b0  61 62 6c 65 61 75 31 3a  0a 20 66 6f 72 20 65 6c  |ableau1:. for el|
000000c0  65 6d 65 6e 74 32 20 69  6e 20 74 61 62 6c 65 61  |ement2 in tablea|
000000d0  75 32 3a 0a 20 20 66 6f  72 20 65 6c 65 6d 65 6e  |u2:.  for elemen|
000000e0  74 33 20 69 6e 20 74 61  62 6c 65 61 75 33 3a 0a  |t3 in tableau3:.|
000000f0  20 20 20 74 65 73 74 3d  65 6c 65 6d 65 6e 74 31  |   test=element1|
00000100  2b 65 6c 65 6d 65 6e 74  32 2b 65 6c 65 6d 65 6e  |+element2+elemen|
00000110  74 31 0a 20 20 20 70 72  69 6e 74 28 74 65 73 74  |t1.   print(test|
00000120  29 0a 0a                                          |)..|
00000123

je ne vois rien d'anormal

et voici le petit script complet :

#!/usr/bin/python

import os
import hashlib
tableau1 = open('A', 'r').readlines()
tableau2 = open('B', 'r').readlines()
tableau3 = open('C', 'r').readlines()

for element1 in tableau1:
 for element2 in tableau2:
  for element3 in tableau3:
   test=element1+element2+element1
   print(test)

Peut être que cela viens du faite que les variables sont initialiser par des tableaux ?

Dernière modification par one_more_time_ (Le 22/03/2014, à 18:08)

Hors ligne

#7 Le 22/03/2014, à 18:13

jamesbad000

Re : problème de variables en bash mais aussi en python

Bonjour,

Je suis pas spécialiste en python, mais a priori readline comme son nom l'indique lit des lignes (donc terminées par un caractère de fin de ligne)

As tu réellement essayé l'exemple que tu propose dans ton premier message pour voir ce qu'il donne ?


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#8 Le 22/03/2014, à 18:16

pingouinux

Re : problème de variables en bash mais aussi en python

C'est la commande readlines() qui garde le '\n', ou peut-être même '\r\n'.
Cette commande devrait fonctionner :

   test=element1[:-2]+element2[:-2]+element3[:-2]

sinon, essaye celle-ci :

   test=element1[:-1]+element2[:-1]+element3[:-1]

Remarque : Dans ton script, element1 apparaît 2 fois sur la ligne test=…
Édité : Je n'ai pas été assez rapide…

Dernière modification par pingouinux (Le 22/03/2014, à 18:19)

Hors ligne

#9 Le 22/03/2014, à 18:23

one_more_time_

Re : problème de variables en bash mais aussi en python

Merci pingouinux ça fonctionne .

test=element1[:-2]+element2[:-2]+element3[:-2]

Donc effectivement readlines() renvois la ligne + les caractères \r\n en fin de ligne.

Merci pour votre aide.

Hors ligne

#10 Le 22/03/2014, à 18:35

jamesbad000

Re : problème de variables en bash mais aussi en python

Heureusement que pingouinux a eu le reflex de demander le contenu exact du script.
Parce que avec l'exemple bidonné on risquait pas de trouver smile


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne