仅从列表中获取所需的字符串

时间:2012-07-16 12:44:48

标签: python string list

假设我有以下列表

list_fields = ['Full-Time',
 'Options:',
 'Express your interest',
 'Email this to a friend',
 'More information about this job:',
 'Overview:',
 'A',
 'Parasite',
 'position is cool',
 'Are you a LEADER?',
 'For sure there',
 'Hello doing?',
 'If so you will EXCEL.',
 'Bring your skills',
 'programs and procedures']

我想要做的是收集overview之后的所有字符串,我的意思是需要忽略overview字符串之前的字符串。 overview之前和之后可能有很多字符串,但是只想在overview作为列表之后收集所有字符串,并希望通过使用类似''.join([list_fields])之类的字符串将它们作为单个字符串 对不起,如果我一次又一次地使用文字,任何人都可以告诉我如何做到这一点

Edited Code:
  1. 我们是否只能在“概述:”之后到“带来你的技能”之前取得。
  2. 提前致谢

4 个答案:

答案 0 :(得分:5)

如果您知道字符串是"Overview:",那么您可以

''.join(list_fields[list_fields.index("Overview:") + 1:])

这使用list.index()来确定列表中"Overview:"的索引,并使用切片从"Overview:"之后的索引处获取子列表。

答案 1 :(得分:3)

import itertools as it

list(it.dropwhile(lambda x: not x.lower().startswith('overview'), list_fields))[1:]

答案 2 :(得分:2)

a = [1,2,3,4,5,6,7,8]
a[a.index(4):]

>> [4, 5, 6, 7, 8]

所以在你的情况下,你可以这样做:

"".join(list_fields[list_fields.index("Overview:"):])

回答评论中的问题:

def my_slice(l,a,b):
    try:
        a_idx = l.index(a)
        b_idx = l.index(b)

    except ValueError:
        return []

    if a_idx > b_idx:
        a_idx, b_idx = b_idx, a_idx
    return l[a_idx:b_idx+1]

my_slice(list_fields,'Overview:','Bring your skills')

答案 3 :(得分:-1)

切片应该与索引一起使用。如果找不到,则无法处理错误。

lstResults = list_fields[list_fields.index('overview'):]