-1

循环通过正好 173754 个字符串的大列表(之前从文本文件中读取),我有一个 if 语句来寻找与正则表达式的匹配。像这样:

def filtering(a_list):
    for i in a_list:
            if re.search(r'\d{0,1}\s+Contacts;\s*', i) is not None:

我想要做的是在匹配发生后自动将接下来的 5 个元素附加到第二个列表中。为这五个元素单独编写正则表达式是不可能的,因为它们没有特殊的格式或值。我所能做的就是在我真正想要的信息之前掌握这一要素。

我怎样才能掌握连续的五种元素?

我尝试附加匹配项的索引,然后用切片获取接下来的五个元素,问题是列表中有很多重复项,所以它显然总是返回第一个最低的索引。

在我读入文本文件并稍微格式化后立即调用该函数:

#Read in input file and somewhat format the text.
test_cases = open('input.txt', 'r')
for i in test_cases:
    if len(i) < 64 or i != ';':
        k = ';'.join(' '.join(line.split()) for line in i.split('\n'))
        #print(k)
        my_list.append(k)
#call first cleaning function with the formatted list as input. then close file
filtering(my_list)
test_cases.close()
4

1 回答 1

0

您是否正在寻找这个:

def filtering(a_list):
    results = []
    for i, item in enumerate(a_list):
        if re.search(r'\d{0,1}\s+Contacts;\s*', item) is not None:
            results.extend(a_list[i+1:i+6])
于 2013-05-31T08:26:15.973 回答