выбор правильной структуры данных для анализа файла

У меня есть файл csv с содержимым в следующем формате:

CSE110, Mon, 1:00 PM, Fri, 1:00 PM CSE114, Mon, 8:00 AM, Wed, 8:00 AM, Fri, 8:00 AM 

который является в основном названием курса, за которым следуют тайминги.

какова лучшая структура данных для анализа и хранения этих данных?

Я попытался использовать именованные кортежи следующим образом:

 CourseTimes = namedtuple('CourseTimes', 'course_name, day, start_time ') 

Но один курс можно планировать несколько дней и дней, как показано выше для cse114. Это можно решить только во время выполнения. Как справиться с этим?

или еще, могу ли я использовать словарь или список?

Я пытаюсь решить проблему планирования, чтобы назначить TA для курсов. Мне, возможно, придется сравнивать время, чтобы проверить какие-либо столкновения в будущем

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

 //Course times CSE110, Mon, 1:00 PM, Fri, 1:00 PM CSE114, Mon, 8:00 AM, Wed, 8:00 AM, Fri, 8:00 AM .... //Course recitation times CSE306, Mon, 2:30 PM CSE307, Fri, 4:00 PM ... //class strength CSE101, 44, yes CSE101, 115, yes ... 

Мне нужно хранить все это в отдельных структурах данных, я полагаю. Какими могут быть правильные шаблоны для каждой категории?

2 Solutions collect form web for “выбор правильной структуры данных для анализа файла”

Начните с отметки нескольких вещей о ваших данных:

  1. У вас есть ряд уникальных строк (курсы)
  2. После каждого курса есть несколько строк (время, которое класс проводит в неделю)

При этом у вас есть ряд уникальных клавиш, каждый из которых имеет несколько значений.

Звучит как словарь для меня.

Чтобы получить эти данные в словаре, начните с чтения файла . Затем вы можете использовать регулярные выражения для выбора каждого [day], [hour]:[minutes] [AM/PM] или простого старого string.split (), чтобы разбить строку на разделы запятыми. Строка курса – это ключ в словаре с остальной частью строки как кортеж или список значений. Переместитесь на следующую строку.

 { 'CSE110': {'Mon': ['8: 00 AM'], 'Wed': ['8: 00 AM'], 'Fri': ['8: 00 AM'], 'CSE110': {'Mon': ['1: 00 PM'], 'Fri': ['1: 00 PM']} } 

Словарь этой формы. Курс может иметь несколько слотов за тот же день.

Когда вы читаете файл csv, вы создаете для курса и в тот день (если он еще не существует) и присваиваете ему один список элементов для синхронизации. Если значение для курса и дня уже присутствует, вы просто добавляете к существующему списку. Это означает, что в тот же день в течение более одного тайминга.

Вы не нуждаетесь в регулярном выражении, чтобы найти категорию входной строки. Первый и второй типы, которые у вас есть (например, один день и несколько дней), можно найти как

 l = line.split(', ') try: n = int(l[1]) # n = strength except: #continue adding to dictionary since second element in the list is not an integer 
  • Заполнение нескольких символов пробелом - python
  • Подгонка всего, кроме буквы - регулярное выражение
  • python reg ex включить отсутствующие запятые
  • re.split не работает должным образом со строкой, поступающей из ячейки excel
  • Python - «IOError: ошибка ». Что вызывает эту ошибку в моем коде?
  • Найти / заменить URL-адрес в документе с помощью регулярного выражения Python
  • шаблон regex в python для анализа тегов заголовков HTML
  • Недопустимый синтаксис с использованием регулярного выражения в python 3.4
  • Python - лучший язык программирования в мире.