Допустим, у меня есть текстовый файл со следующим содержимым:
Quetiapine fumarate Drug substance This document
Povidone Binder USP
This line doesn't contain any medicine name.
This line contains Quetiapine fumarate which shouldn't be extracted as it not present at the
beginning of the line.
Dibasic calcium phosphate dihydrate Diluent USP is not present in the csv
Lactose monohydrate Diluent USNF
Magnesium stearate Lubricant USNF
Lactose monohydrate, CI 77491
0.6
Colourant
E 172
Some lines to break the group.
Silicon dioxide colloidal anhydrous
(0.004
Gliding agent
Ph Eur
Adding some random lines.
Povidone
(0.2
Lubricant
Ph Eur
У меня есть csv, содержащий список лекарств, который я хочу сопоставить в файле .txt и извлекать все данные, которые присутствует между 2 уникальными лекарствами (когда название лекарства находится в начале строки). (Примеры лекарств из файла csv: 'Quetiapine fumarate', 'Povidone', 'Magnesium stearate', 'Lactose monohydrate' etc etc.)
Я хочу перебрать каждую строку моего текстового файла и создать группируется от одного лекарства к другому.
Это должно происходить только в том случае, если название лекарства присутствует в начале новой строки и отсутствует между строкой.
Ожидаемый результат:
['Quetiapine fumarate Drug substance This document'],
['Povidone Binder USP'],
['Lactose monohydrate Diluent USNF'],
['Magnesium stearate Lubricant USNF'],
[Lactose monohydrate, CI 77491
0.6
Colourant
E 172],
[Povidone
(0.2
Lubricant
Ph Eur]
Может ли кто-нибудь помочь мне с этим же сделать это в Python?
Попытка до сих пор:
medicines = ('Quetiapine fumarate', 'Povidone', 'Magnesium stearate', 'Lactose monohydrate')
result = []
with open('C:/Users/test1.txt', 'r', encoding='utf8') as f:
for line in f:
if any(line.startswith(med) for med in medicines):
result.append(line.strip())
, которая фиксирует вывод до этого момента, но мне нужно оставшаяся часть:
['Quetiapine fumarate Drug substance This document'],
['Povidone Binder USP'],
['Lactose monohydrate Diluent USNF'],
['Magnesium stearate Lubricant USNF']
Мне нужно захватить весь текст из одного лекарства в другое, как показано в ожидаемом результате. Если в строке присутствует только одно название лекарства, мне нужно записать данные для m следующие четыре строки и сформируйте группу, в которой число появится на следующей строке после лекарства, как показано в выходных данных.