2016-09-16 144 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)