正確に 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 つの要素を 2 番目のリストに自動的に追加することです。これらの 5 つの要素に対して個別に正規表現を記述することはできません。これらには特別な形式や値がないためです。私にできることは、実際に欲しい情報の前にあるこの要素を把握することだけです。
連続する五行をどう捉えるか。
一致のインデックスを追加してから、次の 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()