# \[Python\] Extraire une valeur dans une chaine a cote d'un mot

**URL:** <https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 8:25 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280 "2016-02-20T20:25:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sinozis](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/85f322/32.png) [@sinozis](https://www.debian-fr.org/u/sinozis)\
**Post date:** [Février 20, 2016, 8:25 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280/1 "2016-02-20T20:25:49Z")

</div>

Bonjour je débute en python  
Donc voila ma question  
Je me suis fait un Batch M$ au travail pour voir si des PC sur le réseau sont bien connectés  
Donc j’ai un fichier avec toutes les ips que je veux atteindre [pingip.info](http://pingip.info)  
Et grâce a un compteur je ping toutes les X minutes les ips dans mon .info  
Le batch m envoie un “net send” des qu’une ip change de statut (Ok ou Nok) et renseigne un log  
Donc voila le batch M$ c’est lourd mon proc a 100% tout le temps  
Je me suis décidé à le faire en python (c’est du windows mais ça reste du python j’espère que vous serez tolèrent parce que on est sur un forum debian mais c’est le seul forum auquel je suis inscrit a part celui d’audiofanzine 😊 )

[code]# -_- coding:Utf-8 -_-

import os  
ping=os.popen(“ping sip92 -n 1”)  
lignes=ping.readlines()  
print lignes[/code]  
ça me sort :

```auto

```

J’aimerais extraire la valeur a coté de perdu =

Est-ce possible ou y a t’il un moyen plus simple pour faire ca ?

Merci

---

<div class="post-metadata">

**Author:** ![sinozis](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/85f322/32.png) [@sinozis](https://www.debian-fr.org/u/sinozis)\
**Post date:** [Février 20, 2016, 8:26 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280/2 "2016-02-20T20:26:01Z")

</div>

Je me suis fais un petit code mais j’ai un petit souci avec les boucles while :

[code]# -_- coding:Utf-8 -_-

# essai python

loop1 , loop2 = 0 , 0

while (loop1 \< 4):  
print "@@@@"  
while (loop2 \< 2):  
print "##"  
loop2 = loop2 + 1  
loop1 = loop1 + 1[/code]

ca me donne

[code]\>\>\>  
@@@@

## 

## 

@@@@  
@@@@  
@@@@[/code]

Mais moi je veux

[code]  
@@@@

## 

## 

@@@@

## 

## 

@@@@

## 

## 

@@@@

## 

##[/code]

Pourriez-vous m’aider

---

<div class="post-metadata">

**Author:** ![sinozis](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/85f322/32.png) [@sinozis](https://www.debian-fr.org/u/sinozis)\
**Post date:** [Février 20, 2016, 8:26 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280/3 "2016-02-20T20:26:03Z")

</div>

Bon j’ai réussit  
Il fallait en gros que j’initialise la boucle avant celle-ci

[code]# -_- coding:Utf-8 -_-

# essai python

loop1 = 0  
while (loop1 \< 4):  
print “@@@@”  
loop2 = 0  
while (loop2 \< 2):  
print “##”  
loop2 = loop2 + 1  
loop1 = loop1 + 1[/code]

Voici mon code pour le ping  
Oui je sais ce n’est pas beau et je pari qu’il y a une fonction qui permet de faire ca  
Mais bon je suis content de moi c’est déjà ca 😃

[code]# -_- coding:Utf-8 -_-

# test ping

pingOk = “None”  
import os  
ping=os.popen(“ping sip92 -n 1”) #permet d’exécuter un programme console  
resultping=ping.readlines() # renvoi dans la variable resultping

nbline = len(resultping) #donne le nombre de ligne dans la variable nbline  
loopA = 1  
while (loopA \< nbline): #boucle de lecture ligne par ligne  
phrase = resultping[loopA]  
nbcar = len(phrase) #donne le nombre de caractère dans la variable nbcar  
loopB = 1  
while (loopB \< nbcar - 1): # boucle d’avance du curseur  
mot = phrase[loopB]  
loopC = 1  
while (loopC \< 10): #boucle d’extraction de (10) caractères  
posi = loopB + loopC  
mot = mot + phrase[posi]  
loopC = loopC + 1  
if (posi == nbcar - 1): # empêche de sortir des limites avec un sortie de boucle  
loopC = 10  
if (mot == “perdus = 0”): #condition pour que le ping soit ok (10 caractères)  
pingOk = “ok”  
loopB = loopB + 1  
loopA = loopA + 1

print pingOk  
[/code]

![:smt006](https://www.debian-fr.org/uploads/default/original/1X/924eb3db8bedad6a0d333b02031d3c6a9af9d9c5.gif)

---

<div class="post-metadata">

**Author:** ![SuperNinja](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/cc9497/32.png) [@SuperNinja](https://www.debian-fr.org/u/SuperNinja)\
**Post date:** [Février 20, 2016, 8:26 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280/4 "2016-02-20T20:26:55Z")

</div>

Je vais répondre pour la boucle, pas le ping (mais je vais voir si je peux aider): utilise la boucle for !

`for i in range(4):
    print("@@@@")
    for j in range(2):
        print("##")`  
Ce code est compatible Python 3, que demander de plus ?

---

<div class="post-metadata">

**Author:** ![SuperNinja](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/cc9497/32.png) [@SuperNinja](https://www.debian-fr.org/u/SuperNinja)\
**Post date:** [Février 20, 2016, 8:26 UTC](https://www.debian-fr.org/t/python-extraire-une-valeur-dans-une-chaine-a-cote-dun-mot/21280/5 "2016-02-20T20:26:55Z")

</div>

Une réponse “vite fait mal fait" pour le ping, tu as un début [sur cette page](http://www.wellho.net/solutions/python-python-threads-a-first-example.html).  
En gros il te faudrait comprendre les [expressions régulières](http://docs.python.org/3.1/library/re.html) et scanner avec un bout de code du genre:

```auto

```

Les expressions régulières t’éviteront d’avoir à boucler sur les lignes et de scanner avec des pointeurs et des index et des bouts de caractères et j’en passe et des meilleurs.
