2015-05-27 62 views
2

是否有更簡單的方法來執行以下操作?在列表查找中單行匹配部分字符串

filename = 'vudu_hail_20140101.xml' 
acceptable_stems = ['vudu', 'google'] 

process_file = False 
for acceptable_stem in acceptable_stems: 
    if acceptable_stem in filename: 
     process_file = True 

基本上,我正在尋找在莖一個是否在文件名的布爾決定因素。這將如何完成一個班輪?

+1

不應該這樣對去代碼審查,而不是住在這裏的SO? – Zizouz212

+0

@ Zizouz212這裏的代碼只是作爲對問題的解釋;這不是代碼審查的問題。 –

+0

@AmiTavory *有沒有更簡單的方法來做到以下幾點?*它顯然有效... – Zizouz212

回答

2

如何使用any關鍵字:

any([acceptable_stem in filename for acceptable_stem in acceptable_stems]) 

例子:

>> filename = 'vudu_hail_20140101.xml' 
>> acceptable_stems = ['vudu', 'google'] 
>> any([acceptable_stem in filename for acceptable_stem in acceptable_stems]) 
True 

>> filename = 'vudu_hail_20140101.xml' 
>> acceptable_stems = ['vuduf', 'google'] 
>> any([acceptable_stem in filename for acceptable_stem in acceptable_stems]) 
False 
+1

如果需要,您可以刪除方括號 - 無需將生成器轉換爲「列表」。 – TigerhawkT3

+0

@ TigerhawkT3 - 刪除爲我生成的括號''<生成器對象 0x7f97bff85410>',而不是布爾值。 –

+0

對於我來說(使用第一個例子)''True'與'any(acceptable_stem in filename for acceptable_stem in acceptable_stems)''有關。 – TigerhawkT3