Несколько общих префиксов среди разных путей
Извините за название, моя проблема заключается в следующем. У меня есть список путей, и я хочу получить несколько общих префиксов. Например, учитывая, что у меня есть:
['/usr/local/lib/python2.7/dist-packages/pkg_name-0.1-py2.7.egg/pkg_name',
'/usr/local/lib/python2.7/dist-packages/pkg_name-0.1-py2.7.egg/EGG-INFO',
'/usr/bin/pkg_name']
Я хочу иметь:
['/usr/local/lib/python2.7/dist-packages/pkg_name-0.1-py2.7.egg/',
'/usr/bin/pkg_name']
Потому что первые два имеют общий префикс, который является каталогом. Надеюсь, я ясно дал понять,
рубик
РЕДАКТИРОВАТЬ: пути у меня есть яйца Python и некоторые исполняемые файлы. Я хочу удалить все яйцо, а не каталоги внутри него, как EGG-INFO
или же pkg_name
, Так должно быть /usr/.../dist-packages/pkg_name-0.1-py2.7.egg/
, Другой путь, поскольку он является исполняемым файлом, остается без изменений.
Спасибо
1 ответ
Решение
Проблема не четко определена. Что вы хотите иметь в этом случае:
/usr/bin/a
/usr/bin/b
/usr/etc
/usr/local
Будет ли это один /usr
или два: /usr/bin
/usr
или три?
В любом случае алгоритм будет таким:
- сортировать список
- взять первый элемент и сделать
os.path.commonprefix()
с 2-го, 3-го,..., i-го, пока общего префикса нет/
; это будет ваша первая группа - повторите шаг 2, начиная с (i+1) -ого