Python数组从Word复制到Word

时间:2016-04-10 17:17:00

标签: python arrays string

所以我有一个数组,我希望复制这个数组中的每个字符串,从它找到一个单词作为条件并以另一个具有相同单词的字符串结束。例如,如果我有一个数组如下:

['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']

我希望例如搜索单词循环并将每个字符串复制到一个新数组中,直到它再次找到循环。所以它应该返回一些东西:

['Loop: atfg','xyzgh','blabla','blablable Loop']

感谢任何帮助

6 个答案:

答案 0 :(得分:1)

以下代码查找包含my_list = ['trash', 'Loop: 1','2','3','4 Loop', 'more trash'] search_str = "Loop" start_index = my_list.index(next(e for e in my_list if search_str in e)) end_index = my_list.index(next(e for e in my_list[start_index + 1:] if search_str in e)) result = my_list[start_index:end_index + 1]

的第一个和第二个元素的索引
wine_rack

要了解如何使用它:

wine_rack[:category]

它可能看起来比多行循环更怪异,但它更多的Python方式:]

答案 1 :(得分:1)

通过yield:

迭代源列表一次
i = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']

def find_range(items):
    start = False
    for i in items:
        if 'Loop' in i:
            yield i
            if start:
                break

            start = True
        elif start:
            yield i

print list(find_range(i))

答案 2 :(得分:0)

尝试做这样的事情:

list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
if any("loop" in l for l in list):

答案 3 :(得分:0)

遍历列表,查找第一个匹配项,然后是第二个匹配项:

input = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
target = 'Loop'

start_index, end_index = None, None
for i in input:
    if target in i:
        if start_index is None:
             start_index = input.index(i)
             continue
        end_index = input.index(i)
        break

output = input[start_index : end_index + 1]

答案 4 :(得分:0)

列表:

list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']

我认为你可以尝试这样做,以便找到数组中的位置:

ixs = [i for i, word in enumerate(list) if word.startswith('Loop') or word.endswith('Loop')]

然后你只需切片列表:

res = list[ixs[0]:ixs[1]+1]

希望这可以帮到你。

答案 5 :(得分:0)

我看到有一些奇特的单线解决方案。 :) 然而,我喜欢看起来更加理解的蛮力的那些:

>>> my_list = ['abcde','Loop: atfg','xyzgh','blabla','blablable Loop','other thing']
>>> search_str = "(Loop)+"
>>> out = []
>>> count = 0
>>> for s in my_list:
...     if count == 2:
...         break
...     m = re.search(search_str, s)
...     if m != None:
...         count += 1
...     if count >= 1:
...         out.append(s)
...
>>> out
['Loop: atfg', 'xyzgh', 'blabla', 'blablable Loop']
>>>