2016-09-16 143 views
-3

我通过存储区域拖网和路径看起来像这样很多: storagearea /存放1/ABC/ABCDEF1 /生/ 2013/05/ABCFGM1查找字符的索引位置字符串

我不会总是知道哪一年呢?我需要找到当年的起始索引位置

为此我找我发现在文件名中的以下内容,其中(2010,2011,2012,2013 2014等)

我有建立一个列表如下:

list_ = ['2010', '2011','2012','2013','2014', '2015', '2016'] 

,我可以找到,如果它是在文件名

if any(word in file for word in list_): 
    print 'Yahooo' 

可是我怎么觉得今年的绝对路径的字符索引?

+0

'index'找到的顺序位置的一个元素:'list_.index('2010')' – EdChum

+0

@EdChum我不认为这是一个愚蠢的问题(尽管它可能是一些其他的)。问题的主要观点似乎是,OP不知道文件名中包含哪一年的字符串。 –

+0

是的,确切地说,tobias_k –

回答

1

而不是使用生成器表达式(它有自己的范围内)的,使用传统的循环,然后打印发现字的指数和break当你找到一个匹配:

list_ = ['2010', '2011','2012','2013','2014', '2015', '2016'] 
for word in list_: 
    if word in file: 
     print file.index(word) 
     break 
0

Python string.index

string.index(s, sub[, start[, end]])¶ 

    Like find() but raise ValueError when the substring is not found. 
1

我建议join ing那些年使用使用'|'作为分隔符...

>>> list_ = ['2010', '2011','2012','2013','2014', '2015', '2016'] 
>>> p = "|".join(list_) 
>>> p 
'2010|2011|2012|2013|2014|2015|2016' 

...然后使用re.search找到匹配和span()group()找到匹配的位置和匹配当年的自己:你想使用

>>> filename = "storagearea/storage1/ABC/ABCDEF1/raw/2013/05/ABCFGM1" 
>>> m = re.search(p, filename) 
>>> m.group() 
'2013' 
>>> m.span() 
(37, 41)