2016-09-16 8 views
-3

内の文字のインデックス位置を探す: 記憶領域/ストレージ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

私はregular expressionにその年を入力してくださいをデリミタとして使用することをお勧めします...

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

...そしてその試合の位置と一致した年間自分自身を見つけるために、試合とspan()group()を見つけることre.searchを使用して:

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