У меня есть текстовый файл с тысячами строк в виде строк.
Каждая строка начинается в формате «#integer», например, «# 100».
Я последовательно читаю txt-файл (строка № 1, № 2, № 3 ..) и получаю определенный массив, который мне нужен, где массив представляет собой набор номеров строк и других строк, связанных с этими строками:
Массив имеет вид:
[ ['#355', '#354', '#357', '#356'], ['#10043', '#10047', '#10045'], ['#1221', '#1220', '#1223', '#1222', '#1224'], [...] ]
Может содержать сотни чисел.
(это потому, что у меня есть массив чисел и дополнительные «потомки», связанные с ними, добавленные в каждый подмассив.)
Я прочитал свой текстовый файл перед следующей функцией: это означает, что сначала я прочитал свой текстовый файл, извлек число и затем передал его в виде массива в функцию extended_Strings
, которая заменяет каждое число на фактическая строка для этой числовой строки из текстового файла .
def extended_strings(matrix,base_txt):
string_matrix = matrix #new matrix to contain our future strings
for numset in string_matrix:
for num in numset:
for line in base_txt:
results = re.findall(r'^#\d+', line) #find the line # at start of string
if len(results) > 0 and results[0] == num: #if we have a # line that matches our # in the numset
index = numset.index(num) #find index of line # in the numset
numset[index] = line #if we match line #'s, we replace the line # with the actual string from the txt
return string_matrix
Я пытаюсь сделать этот процесс короче и эффективнее, например, у меня есть 150 000 строк в txt, миллионы раз файл txt сканируется строкой for line in base_txt
.
Есть предложения?