2016-02-28 8 views
1

Nouveau sur python.Python String Split

Je suis en train d'analyser la sortie de "fdisk"

Device  Boot  Start  End Sectors Size Id Type 
/dev/sda1 *   2048 206847 204800 100M 7 HPFS/NTFS/exFAT 
/dev/sda2   206848 254308949 254102102 121.2G 7 HPFS/NTFS/exFAT 
/dev/sda3  254310398 488396799 234086402 111.6G 5 Extended 
/dev/sda5  254310400 478828543 224518144 107.1G 83 Linux 
/dev/sda6  478830592 488396799 9566208 4.6G 82 Linux swap/Solaris 

J'ai ce code:

import os 

for line in os.popen('/sbin/fdisk -l').readlines(): 
    if line.find('/dev/') !=0: continue 
    columns = line.split() 
    print columns[0].split('/')[-1] 

    print columns[1] 

qui produit cette sortie:

sda1 
* 
sda2 
206848 
sda3 
254310398 
sda5 
254310400 
sda6 
478830592 

Mis à part les problèmes de formatage évidents que je vais trier plus tard, comment puis-je l'empêcher de reconnaître l'astérisque sur la colonne de démarrage?

Je sais que je pourrais probablement résoudre ce problème avec quelque chose comme AWK pour ignorer complètement la colonne de démarrage, mais je tiens à essayer de le faire avec Python comme im en train d'apprendre.

Répondre

0

Il me semble avoir trouvé la réponse en utilisant "re.split"

for line in os.popen('/sbin/fdisk -l').readlines(): 
if line.find('/dev/') !=0: continue 
columns = re.split("[, \-!?:\*]+", line) 
print columns[0] 
print columns[1] 

donne:

/dev/sda1 
2048 
/dev/sda2 
206848 
/dev/sda3 
254310398 
/dev/sda5 
254310400 
/dev/sda6 
478830592