在Linux上,命令ps aux输出每个统计信息具有多个列的进程列表。例如
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
...
postfix 22611 0.0 0.2 54136 2544 ? S 15:26 0:00 pickup -l -t fifo -u
apache 22920 0.0 1.5 198340 16588 ? S 09:58 0:05 /usr/sbin/httpd
我希望能够使用Python进行阅读,然后将每一行然后每一列分开,以便可以将它们用作值。
在大多数情况下,这不是问题:
ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
我现在可以遍历流程以获取每一行并将其按空格分开,例如
sep = re.compile('[\s]+')
for row in processes:
print sep.split(row)
但是,问题在于命令的最后一列有时在其中有空格。在上面的示例中,可以在命令中看到
pickup -l -t fifo -u
将被拆分为
['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup', '-l', '-t', 'fifo', '-u']
但我真的希望它是:
['postfix', '22611', '0.0', '0.2', '54136', '2544', '?', 'S', '15:26', '0:00', 'pickup -l -t fifo -u']
所以我的问题是,我该如何拆分列,但是当涉及到命令列时,将整个字符串保留为一个列表元素,而不是按空格拆分?
使用第二个参数split
指定将字符串拆分为的最大字段数。我想您可以通过计算第一行中的字段数(即列标题)来找到数字。
ps = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE).communicate()[0]
processes = ps.split('\n')
# this specifies the number of splits, so the splitted lines
# will have (nfields+1) elements
nfields = len(processes[0].split()) - 1
for row in processes[1:]:
print row.split(None, nfields)
我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?
问题内容: 我有一个字符串如下: 我想提取数字:872226816,因此在这种情况下,我假设在第二个逗号开始读取数据之后,随后的逗号结束数据读取。 输出示例: 问题答案: 用于String.split()的 Javadoc
问题内容: 如何在定界符哪里分割此字符串 获得?的输出 问题答案: 你可以使用以下功能:
本文向大家介绍如何使用python进行pdf文件分割,包括了如何使用python进行pdf文件分割的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了如何使用python进行pdf文件分割,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 使用方法 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
问题内容: 我有一个连接到我的应用程序的JSON feed。其中一项是经纬度,以逗号分隔。例如:“ 32.0235,1.345”。 我正在尝试通过逗号将其拆分为两个单独的值。 有什么建议吗?谢谢!! 问题答案:
问题内容: 我在网上找到了一些答案,但是我没有使用正则表达式的经验,我相信这里是需要的。 我有一个字符串,需要用分隔 或也就是说,它必须是分号或逗号后跟一个空格。没有尾随空格的单个逗号应保持不变 示例字符串: 应该拆分为包含以下内容的列表: 问题答案: 幸运的是,Python内置了:) 更新: 在你的评论之后: