Python字符串拆分

时间:2016-02-28 18:32:01

标签: python

python新手。

我正在尝试解析“fdisk -l”

的输出
    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

我有这段代码:

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]

产生此输出:

sda1
*
sda2
206848
sda3
254310398
sda5
254310400
sda6
478830592

除了我稍后将要排序的明显格式问题之外,如何阻止它识别Boot列上的Asterisk?

我知道我可能用像AWK之类的东西来解决这个问题,完全忽略了Boot列,但我想尝试用Python来做这个,因为我还在学习。

1 个答案:

答案 0 :(得分:0)

我似乎找到了使用“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]

给出:

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