获取从“ / etc / group”中排序的组ID

时间:2018-09-17 02:55:49

标签: python-3.x centos

我想操纵“ / etc / group”

In [39]: fp = open("/etc/group")
In [40]: content = [c.replace("\n", "") for c in fp.readlines()]
In [42]: content
Out[42]: 
['root:x:0:',
 'bin:x:1:',
 'daemon:x:2:',
 'sys:x:3:',
 'adm:x:4:',
 'tty:x:5:',
 'disk:x:6:',
 'lp:x:7:',
 'mem:x:8:',
 'kmem:x:9:',
 'wheel:x:10:',
 'cdrom:x:11:',
 'mail:x:12:postfix',
 'man:x:15:',
 'dialout:x:18:',....]

结果按字母而不是组ID排序

In [44]: sorted(content, key=lambda c:int(re.search(r"\d+",c).group()))
Out[44]: 
['root:x:0:',
 'bin:x:1:',
 'daemon:x:2:',
 'sys:x:3:',
 'adm:x:4:',
 'tty:x:5:',
 'disk:x:6:',
 'lp:x:7:',
 'mem:x:8:',
 'kmem:x:9:',
 'wheel:x:10:',
 'cdrom:x:11:',
 'mail:x:12:postfix',
 'man:x:15:',
 'dialout:x:18:',

我通过无线方式通过re.search和lambda完成了该任务,
能否以优雅的风格解决?

1 个答案:

答案 0 :(得分:1)

按第三个冒号定义的字段排序:

sorted(content, key=lambda x: int(x.split(':')[2]))