Patrik
Июль 16, 2014 11:46:49
Добрый день, подскажите пожалуйста.
Есть список путей, к примеру:
a = ('C:\test' , ‘C:\test\1’, ‘C:\test\2’, ‘C:\test\2\3’)
как исключить из списка C:\test и C:\test\2, так как они входят в C:\test\1 и C:\test\2\3
Hyyudu
Июль 16, 2014 16:16:04
for x in a[:]:
a=filter (lambda t: not (x.startswith(t) and x != t), a)
Только надо, чтобы a было списком, а не кортежем (не в круглых скобках должно быть, а в квадратных)
Patrik
Июль 16, 2014 16:41:21
Hyyudu: Скобки я проглядел, действительно в квадратных должны быть.
Попробовал в действие код, он выдал:
C:\test\1
C:\test\2
C:\test\2\3
C:\test\2 входит в C:\test\2\3, его по идее нужно было отбросить.
terabayt
Июль 16, 2014 17:36:34
У меня все правильно работает!
>>> a = [r'C:\test' , r'C:\test\1', r'C:\test\2', r'C:\test\2\3']
>>> for x in a:
... a = filter(lambda t: not (x.startswith(t) and x != t), a)
...
>>> a
['C:\\test\\1', 'C:\\test\\2\\3']
py.user.next
Июль 17, 2014 04:14:29
Patrik
как исключить из списка C:\test и C:\test\2, так как они входят в C:\test\1 и C:\test\2\3
Строка “C:\test” входит во все эти строки.
Hyyudu
Июль 17, 2014 10:23:54
Patrik, вы слеши в строках не экранировали, может, в этом дело