不同路径之间的多个公共前缀
Posted
技术标签:
【中文标题】不同路径之间的多个公共前缀【英文标题】:Multiple common prefixes among different paths 【发布时间】:2011-08-15 06:45:15 【问题描述】:对不起标题,我的问题如下。我有一个路径列表,我想获得 multiple 个公共前缀。例如,假设我有:
['/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/
。另一条路径,因为它是可执行文件,所以保持原样。
谢谢
【问题讨论】:
算法如何判断它不应该只是/usr
?
查看我的编辑。它必须是一个 Python 蛋。
为什么不直接删除包含.egg/
的路径?
嗯,这可能很危险......
【参考方案1】:
问题没有明确定义。在这种情况下你想要什么:
/usr/bin/a
/usr/bin/b
/usr/etc
/usr/local
是一个/usr
还是两个:/usr/bin
/usr
,还是三个?
无论哪种情况,算法都是这样的:
-
对列表进行排序
取第一个元素并用第二个,第三个,...,第一个元素做
os.path.commonprefix()
,直到公共前缀不是/
;这将是你的第一组
重复第 2 步,从第 (i+1) 个开始
【讨论】:
谢谢。我知道它没有明确定义,但我不知道如何解释它。我想要有目录的公共前缀。因此,在您的示例中,它将是:/usr/bin, /usr/etc/, /usr/local
。但问题比这更明确。我拥有的路径是 Python 鸡蛋及其可执行文件。我想删除整个鸡蛋,而不是其中的目录(如EGG-INFO
或pkg_name
)。我应该编辑我的问题...以上是关于不同路径之间的多个公共前缀的主要内容,如果未能解决你的问题,请参考以下文章
Java书签 #SpringCloud:接口请求路径添加统一的Prefix前缀