2015-12-21 1 views
1

Je suis très nouveau sur python.Réorganiser les mots dans une phrase donnée en python

je reçois une série de données dans le port COM en format fixe comme une chaîne comme ceci:

"21-12-2015 10:12:05 005 100 10.5 P" 

Le format est 'date heure id des données de comptage des données'

Ici, je ne ai pas besoin count et les premières données, à la place je veux ajouter une donnée de plus et l'envoyer à nouveau via un autre port COM.

Je veux réorganiser cela et donne une sortie comme

21-12-2015 10:12:05 
    SI.NO: 1451 
    Result: 10.5 P 

Ma tentative:

ip = '21-12-2015_10:12:05_005_100_10.5 P' 

dt = ip[0]+ip[1]+ip[3]+..... #save date as dt 
tm = ip[9]+ip[10]+ip[11]+.... etc 

et à la fin

Result = dt + tm +"\n" + "  "+ "SI.NO"+....... 

S'il vous plaît suggérer une bonne idée de le faire dans python 2.7.11 Si vous pouvez mentionner quelques idées, je vais chercher le code.

Merci

+0

Bonjour, bienvenue sur StackOverflow. Il est utile de faire deux choses en posant des questions ici: soyez précis sur ce que vous essayez de faire, et montrez les efforts que vous avez déjà déployés pour résoudre le problème. Exemple: il semble que vos données sont formatées de sorte que la première étape serait de les diviser par les traits de soulignement; Avez-vous essayé de chercher comment faire cela? –

+0

Merci d'avoir suggéré, je l'ai changé. –

+0

D'où vient «SI.NO: 1451»? Ou est-ce toujours la même chose? – timgeb

Répondre

1

Vous pouvez diviser votre chaîne sur les espaces dans les champs avec split et construire une nouvelle chaîne en utilisant string formatting syntax de Python:

ip = "21-12-2015 10:12:05 005 100 10.5 P" 
fields = ip.split() 
s = '{date} {time}\n SI.NO: {sino}\n Result: {x} {y}'.format(
     date=fields[0], 
     time=fields[1], 
     sino=1451,  # Provide your own counter here 
     x=fields[4], 
     y=fields[5]) 
print s 

21-12-2015 10:12:05 
    SI.NO: 1451 
    Result: 10.5 P 

Il ne ressort pas de votre question de savoir si vos champs sont séparés par des espaces ou des traits de soulignement. Dans ce dernier cas, utilisez fields = ip.split('_').