我有一个字符串列表 - 像
mytext = ['This is some text','this is yet more text','This is text that contains the substring foobar123','yet more text']
我想找到的东西,与foobar的开始第一次出现。 如果我grepping然后我会做搜索foobar的*。 我目前的解决方案是这样的
for i in mytext:
index = i.find("foobar")
if(index!=-1):
print i
这工作得很好,但我想知道如果有一个“好”(即更Python)这样的方式?
干杯,迈克
您也可以使用列表理解:
matches = [s for s in mytext if 'foobar' in s]
(如果你真的找以 “foobar的”作为THC4k注意到字符串,考虑以下因素:
matches = [s for s in mytext if s.startswith('foobar')]
如果你真的想与foobar的开头的字符串的第一次出现(?这是你的话语说什么,不过从你的代码非常不同,所有的答案提供,你的grep提 - 如何能矛盾你 - ),尝试:
found = next((s for s in mylist if s.startswith('foobar')), '')
这给出了一个空字符串作为found
如果没有MYLIST的项满足条件的结果。 你也可以使用itertools等,代替简单genexp的,但关键的诀窍是用这种方式next
有一个默认的内置(Python 2.6中,更好地只)。
for s in lst:
if 'foobar' in s:
print(s)
results = [ s for s in lst if 'foobar' in s]
print(results)
如果你真的找与foobar的(不与他们foobar的) 开头的字符串:
for s in mylist:
if s.startswith( 'foobar' ):
print s
要么
found = [ s for s in mylist if s.startswith('foobar') ]