Получить идентификатор группы, отсортированный из "/ etc / group" - PullRequest
0 голосов
/ 17 сентября 2018

Я бы хотел манипулировать "/ 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:',....]

Результат отсортирован по алфавиту, а не по идентификатору группы

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:',

Я справился с этимповторный поиск и лямбда без проводов,
Может ли это быть решено в элегантном стиле?

1 Ответ

0 голосов
/ 17 сентября 2018

Сортировка по третьему полю, заданному двоеточием:

sorted(content, key=lambda x: int(x.split(':')[2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...