【发布时间】:2017-07-11 15:20:37
【问题描述】:
我有一些代码来解析 linux 'df -h',正常的命令行输出是这样的:
Filesystem Size Used Avail Use% Mounted on
udev 987M 0 987M 0% /dev
tmpfs 201M 9.2M 191M 5% /run
/dev/sda1 38G 11G 25G 30% /
tmpfs 1001M 416K 1000M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 201M 28K 201M 1% /run/user/132
tmpfs 201M 28K 201M 1% /run/user/0
目前我的代码实现了预期的输出:
['/run', '/run/lock', '/run/user/132', '/run/user/0']
但是下面显示的 'print ([x.split(" ")[-1] for x in newlist])' 行感觉就像一个 hack,我正在努力使用 'r.搜索'下面,有人可以建议一个更好的方法吗?
import subprocess
import re
cmd = 'df -h'
output = subprocess.check_output(cmd, shell=True).decode('utf8')
ln = output.split('\n')
r = re.compile('/run.*')
newlist = list(filter(r.search, ln))
print ([x.split(" ")[-1] for x in newlist])
编辑 * 我使用 'df -h' 作为一些随机输出来练习正则表达式,所以虽然@romanPerekhrest 为这个问题提供了最好的现实世界解决方案,但我正在寻找一个正则表达式解决方案。
【问题讨论】:
-
其实我相信你的解决方案比正则表达式更好(而且几乎可以肯定更快)。
标签: python regex python-3.x