在另一个字符串

时间:2016-03-29 12:06:59

标签: python list python-3.x

我有两个包含字符串的列表。第一个列表包含文件和目录列表:

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()时,它会返回包含pathtomy的任何字符串,而不管它出现在字符串中的位置。

所以不要只是得到:

path/to/my/files
path/to/my/dirs

我收到list1

中的所有内容

我的代码是这样的:

for dir in list2:
   for path in list1:
      if path.find(dir):
         print(path)

2 个答案:

答案 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()