Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何找到路径列表的公共路径?_Python 2.7 - Fatal编程技术网

Python 2.7 如何找到路径列表的公共路径?

Python 2.7 如何找到路径列表的公共路径?,python-2.7,Python 2.7,我有一个列表,其中的路径使用“/”作为分隔符,例如: aaa/bbb/ccc/ddd aaa/bbb/ccceee aaa/bbb/ccc/fff 如何用python编写一个返回的函数 字符串“aaa/bbb/”?我对python完全陌生(从昨天开始),但这是我想到的: path=['aaa/bbb/ccc/ddd/eee','aaa/bbb/ccceee/fff','aaa/bbb/ddd/eee','aaa/bbb/'] def get_公共路径(路径): 公共=[] 公共_大小=-1 对

我有一个列表,其中的路径使用“/”作为分隔符,例如:

aaa/bbb/ccc/ddd
aaa/bbb/ccceee
aaa/bbb/ccc/fff
如何用python编写一个返回的函数
字符串“aaa/bbb/”?

我对python完全陌生(从昨天开始),但这是我想到的:

path=['aaa/bbb/ccc/ddd/eee','aaa/bbb/ccceee/fff','aaa/bbb/ddd/eee','aaa/bbb/']
def get_公共路径(路径):
公共=[]
公共_大小=-1
对于路径中的p:
s=p.split(“/”)
s、 流行音乐()
如果公共_大小==-1:
普通尺寸=透镜(s)
普通=s
持续
而普通大小>0和s[0:普通大小]!=常见的:
公共_大小-=1
common.pop()
返回“/”。连接(公共)+“/”
公共路径=获取公共路径(路径)
打印“公共路径=\'{}\”;长度={}。格式(公共路径,len(公共路径))
哪些产出:

公共路径='aaa/bbb/';长度=8

如您所发布的以换行符分隔的输入:

paths = """
aaa/bbb/ccc/ddd
aaa/bbb/ccceee
aaa/bbb/ccc/fff
""" 
列表理解、
zip()
set()
join()

这对你有好处吗

import os

paths = ["aaa/bbb/ccc/ddd",
         "aaa/bbb/ccceee", 
         "aaa/bbb/ccc/fff"]

os.path.commonpath(paths)

你试过什么吗?@HaifengZhang我不管他试过什么。我关心的是他有问题,有人解决了他(和我)的问题。但是,当您考虑跨平台需求时,它会比这更复杂一些。在python3.5中,有os.path.commonpath(而不是commonprefix,这是一种欺骗行为)。我最终从3.5版本移植了commonpath
import os

paths = ["aaa/bbb/ccc/ddd",
         "aaa/bbb/ccceee", 
         "aaa/bbb/ccc/fff"]

os.path.commonpath(paths)