如何使用Python从文本中提取列?

时间:2011-10-20 04:51:07

标签: python

我是python编程的新手。通过在互联网上搜索python文档来写这个脚本。

有人可以帮我把第二列作为“ps aux”命令的输出(即只有PID列)。

#script to print the processid
import os
import commands
out=commands.getoutput('ps aux') # to get the process listing in out
#print out
#print out[2] #print only second column from out
print out[:2] 

output of "print out" statement
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   5728  1068 ?        Ss   Oct13   0:07 /sbin/init
root         2  0.0  0.0      0     0 ?        S<   Oct13   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S<   Oct13   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S<   Oct13   0:11 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Oct13   0:00 [watchdog/0]
root         6  0.0  0.0      0     0 ?        S<   Oct13   0:00 [migration/1]

提前致谢

2 个答案:

答案 0 :(得分:3)

使用split()splitlines()(将字符串转换为行列表,将行列表转换为列列表,然后根据需要进行索引):

>>> for line in out.splitlines():
...     fields = line.split()
...     if len(fields) >= 2:
...         print fields[1]


PID
1
2
3
4
5
6

答案 1 :(得分:3)

正如评论中所提到的,使用awk非常简单:

ps aux | awk {'print $2'}

但是,这里也是一个使用列表推导的python解决方案,它给出了一个PID列表:

>>> [col.split()[1] for col in out.splitlines()]
['PID', '1', '2', '3', '4', '5', '6']