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