我有两个包含字符串的列表。第一个列表包含文件和目录列表:
list1 = ['path/to/my/files',
'path/to/more/of/my/files',
'path/to/my/dirs',
'path/to/more/of/mydirs']
第二个列表包含我要检查list1
是否存在的目录。
list2 = ['path/to/my',
'random/path/to/somewhere',
'path/does/not/matter',
'hey/path/is/here']
我想要的唯一结果是path/to/my/*
,但是当我使用str.find()
时,它会返回包含path
或to
或my
的任何字符串,而不管它出现在字符串中的位置。
所以不要只是得到:
path/to/my/files
path/to/my/dirs
我收到list1
我的代码是这样的:
for dir in list2:
for path in list1:
if path.find(dir):
print(path)
答案 0 :(得分:3)
所有非零数字都是Truthy。如果找不到您的字符串,.find()
会返回-1
,但仍为True
。您需要确保结果不是-1
:
for dir in list2:
for path in list1:
if path.find(dir) != -1:
print(path)
正如@PadraicCunningham在评论中提到的那样,这不是最简单的方法。只需使用in
运算符:
for dir in list2:
for path in list1:
if dir in path:
print(path)
答案 1 :(得分:2)
我认为你需要的是str.startswith()