在字符串中查找列表的元素

时间:2011-12-15 08:23:58

标签: python string list

我有一个字符串'RTKLOANGMSTTTS'和一个元组列表,[(2,5),(8,9)],它返回一个包含字母2-5和8-9的字符串,包括'TKLOGM'。 我想的是:

def f(string, lst):
    for element in lst:
        if element in string:
            print string

但是它没有返回任何东西?

4 个答案:

答案 0 :(得分:4)

试试这个:

def f(source, lst):
    return "".join(source[start - 1:end] for start, end in lst)

这样做会迭代lst,在每次迭代时将元组提取到startend。然后它将从source字符串创建一个新字符串作为切片,从start - 1end(我们使用start - 1,因为您显示1表示第一个字符,但是python使用0索引,所以我们必须减去一个)。最后,我们使用"".join()加入所有字符串。

如果您使用不支持生成器语法的旧版Python,请改用:

def f(source, lst):
    return "".join([source[start - 1:end] for start, end in lst])

它的工作方式完全相同,但它不是使用生成器,而是显式创建一个连接的列表。

答案 1 :(得分:2)

>>> x = 'RTKLOANGMSTTTS'
>>> l = [(2,5),(8,9)]
>>> ''.join(x[s-1:e] for (s,e) in l)
'TKLOGM'

答案 2 :(得分:0)

我认为这就是你所要求的。我现在无法测试,但请尝试:

def f(string, lst):
    getStr = ''
    for t in lst:
        begin, end = t
        getStr += string[begin-1:end]
    return getStr

答案 3 :(得分:0)

def f(string, lst):
   for start, end in lst:
       s = string[start-1:end]
       if s:
           yield s

for s in f('RTKLOANGMSTTTS', [(2,5),(8,9)]):
    print s