Извините за заголовок, моя проблема в следующем. У меня есть список путей, и я хочу получить несколько распространенных префиксов. Например, учитывая, что у меня есть:
['/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']
Потому что первые два имеют общий префикс, который является каталогом. Надеюсь, я сделал это ясно,
рубик
EDIT: Пути, которые у меня есть, - это яйца Python и некоторые исполняемые файлы. Я хочу удалить все яйцо, а не каталоги внутри него, например, EGG-INFO
или pkg_name
. Поэтому это должно быть /usr/.../dist-packages/pkg_name-0.1-py2.7.egg/
. Другой путь, поскольку он является исполняемым, остается таким, каким он есть.
спасибо
Проблема не определена. Что вы хотите иметь в этом случае:
/usr/bin/a
/usr/bin/b
/usr/etc
/usr/local
Должно быть одно /usr
или два: /usr/bin
/usr
, или три?
В любом случае алгоритм будет таким:
os.path.commonprefix()
с 2 - й, 3 - й,..., i-го до общий префикс не является /
; это будет ваша первая группа/usr/bin, /usr/etc/, /usr/local
. Но проблема более определена, чем это. Пути, которые я имею, - это яйца Python и их исполняемый файл. Я хочу удалить все яйцо, а не каталоги внутри него (например, EGG-INFO
или pkg_name
). Я должен отредактировать свой вопрос ...
/usr
?