Python:如何找到字符串中每个列表项的存在
在路径中查找每个目录名的最常用方法是什么,例如,Python:如何找到字符串中每个列表项的存在,python,list,path,Python,List,Path,在路径中查找每个目录名的最常用方法是什么,例如,“/home/user/spam/eggs” 用法示例(不起作用,但解释了我的情况): 谢谢 编辑:如果您只想验证是否存在所有目录: parts = "/home/user/spam/eggs".split('/') print all(dir in parts for dir in ['spam', 'eggs']) 一个使用生成器的单行程序(使用文本查找,不将名称视为与文件系统有关的任何内容-我对您的请求并不完全清楚) 看起来你想要的是…:
“/home/user/spam/eggs”
用法示例(不起作用,但解释了我的情况):
谢谢
编辑:如果您只想验证是否存在所有目录:
parts = "/home/user/spam/eggs".split('/')
print all(dir in parts for dir in ['spam', 'eggs'])
一个使用生成器的单行程序(使用文本查找,不将名称视为与文件系统有关的任何内容-我对您的请求并不完全清楚)
看起来你想要的是…:
if all(d in path.split('/') for d in dirs):
...
这种单行样式效率很低,因为它为每个d保留拆分路径(拆分生成一个列表,而集合更适合于成员身份检查)。将其制成2衬板:
pathpieces = set(path.split('/'))
if all(d in pathpieces for d in dirs):
...
极大地提高了性能。也许这就是您想要的
dirs = ['spam', 'eggs']
path = "/home/user/spam/eggs"
present = [dir for dir in dirs if dir in path]
:
您的输出应该是什么?这显然是可行的,但对于这样一个简单的任务来说,看起来相当复杂。无论如何,谢谢:)如果您想找到列表中的哪些项目出现在字符串中,这实际上是一种很好的方法。如果所有项目都存在,那么其中一个当然需要额外的步骤来比较当前项目和目录。
if all(d in path.split('/') for d in dirs):
...
pathpieces = set(path.split('/'))
if all(d in pathpieces for d in dirs):
...
dirs = ['spam', 'eggs']
path = "/home/user/spam/eggs"
present = [dir for dir in dirs if dir in path]
>>> set(['spam', 'eggs']).issubset('/home/user/spam/eggs'.split('/'))
True