Python сортировка текста в массиве - PullRequest
0 голосов
/ 30 марта 2020

Для некоторого контекста этого проекта у меня есть файл с более чем 500 текстовыми документами, которые выглядят следующим образом:

Case: 44951651558
Sex: M
Age: 50

COLLECTED:  07/26/2019
REPORTED:  07/29/2019
SURGICAL PATHOLOGY REPORT
DIAGNOSIS

A.  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat.

Это структура моих текстовых файлов. У меня есть задача взять эти текстовые файлы и присвоить заданные значения таким переменным, как регистр, пол, возраст, собранный, зарегистрированный и диагноз. Вот код, который у меня сейчас есть:

import os
directory = "E:\\Tubular Adenoma\\"

keywords = ["Case: ",
            "Sex: ",
            "Age: ",
            "COLLECTED: ",
            "REPORTED: ",
            "DIAGNOSIS"]

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        lines = []
        with open(directory + filename, "rt") as file:
            for line in file:
                lines.append(line)
            print(lines)

    else:
        continue

Я пытаюсь присвоить значения в текстовых файлах ключевым словам, как указано в массиве ключевых слов. Я считаю, что это будет тупик, и, вероятно, есть более простой способ сделать это. Все помогает.

Желаемый вывод - это массив, содержащий элементы, перечисленные в массиве ключевых слов. Например, в примере проекта массив будет выглядеть следующим образом:

["44951651558", "M", "50", "07/26/2019", "07/29/2019", "A.  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod..."]

1 Ответ

1 голос
/ 30 марта 2020

Я заставил его работать с другими файлами, и теперь он будет возвращать список списков.

import os
directory = "E:\\Tubular Adenoma\\"

# changed keywords list to dictionary to store the total characters to remove
# when applying slices on line #21
keywords = {'Case:': 6, 'Sex:': 5, 'Age:': 5, 'COLLECTED:': 12, \
    'REPORTED:': 11}

entities = []

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        lines = []
        with open(directory + filename, "rt") as file:
            for line in file:
                # added .strip() to remove all \n after lines
                lines.append(line.strip())

        # Added a list to store all the values
        info = []

        for l in lines:
            for k, v in keywords.items():
                if l.find(k) == 0:
                    info.append(l[v:])

        diagnoses = ''

        # Gets index of DIAGNOSIS and adds 2 to remove the empty line
        slice_value = lines.index("DIAGNOSIS") + 2

        # Loops over every line after DIAGNOSIS in the lines list and appends them to
        # a string called diagnoses.
        for l in lines[slice_value:]:
            diagnoses += l

        info.append(diagnoses)
        entities.append(info)

for e in entities:
    print(e)
...