Возможно, вы захотите создать подсписки и добавить их в свой список. Вот возможное решение:
mydict = {'File1': 'some text. \n Foo extract this. \n Bar extract this',
'File2': 'more text. \n Bar extract this too.'}
mywords = ['Foo', 'Bar']
mylist= []
for k,v in mydict.items():
sublist = []
for word in mywords:
extracted = (re.findall('^ ' + word + ".*", v, flags=re.IGNORECASE|re.MULTILINE))
sublist.append(extracted[:1])
mylist.append(sublist)
Это выводит: [[[' Foo extract this. '], [' Bar extract this']], [[], [' Bar extract this too.']]]
Если вы хотите, чтобы строки были без окружающего списка, вставляйте первый результат только при наличии результат:
import re
mydict = {'File1': 'some text. \n Foo extract this. \n Bar extract this',
'File2': 'more text. \n Bar extract this too.'}
mywords = ['Foo', 'Bar']
mylist= []
for k,v in mydict.items():
sublist = []
for word in mywords:
extracted = (re.findall('^ ' + word + ".*", v, flags=re.IGNORECASE|re.MULTILINE))
if extracted: # Checks if there is at least one element in the list
sublist.append(extracted[0])
mylist.append(sublist)
Это выводит: [[' Foo extract this. ', ' Bar extract this'], [' Bar extract this too.']]
Если вы хотите иметь возможность получить несколько результатов из каждого файла, вы можете сделать следующее (обратите внимание, что я поставил другое совпадение для Foo
во втором файле:
import re
mydict = {'File1': 'some text. \n Foo extract this. \n Bar extract this',
'File2': 'more text. \n Bar extract this too. \n Bar extract this one as well'}
mywords = ['Foo', 'Bar']
mylist= []
for k,v in mydict.items():
sublist = []
for word in mywords:
extracted = (re.findall('^ ' + word + ".*", v, flags=re.IGNORECASE|re.MULTILINE))
if extracted:
sublist += extracted
mylist.append(sublist)
Это выводит: [[' Foo extract this. ', ' Bar extract this'], [' Bar extract this too. ', ' Bar extract
this one as well']]