Проблема со списками питон
Есть код, он получает данные из excel-файла. Проблема в том, что в одной ячейке (состоит из 4 строк) может находится два события и он записывает их под один subject. Как можно исправить?
def get_schedule_for_today(excel_file, day_column, group_column):
df = pd.read_excel(excel_file)
df.columns = df.columns.str.strip()
today = datetime.now().weekday()
today_schedule = df[df[day_column] == days_of_week[today]]
if not today_schedule.empty:
start_index = today_schedule.index[0]
end_index = min(start_index + 20, len(df))
schedule_array = []
pattern = re.compile(r'^[А-ЯЁ][а-яё]+s[А-ЯЁ].[А-ЯЁ].sАуд.sd{3}')
for index, row in df.iloc[start_index:end_index].iterrows():
time_slot = row['Unnamed: 1']
subjects = row[group_column]
if pd.isna(subjects):
continue
subjects_list = [subject.strip() for subject in str(subjects).split(',')]
i = 0
for subject in subjects_list:
if pd.isna(time_slot):
i+=1
print(subject, i)
if schedule_array:
schedule_array[-1]['subject'] += f" {subject};"
else:
schedule_array.append({'time': time_slot, 'subject': subject})
return schedule_array
else:
return []
Ответы (1 шт):
Проблема, скорее всего, кроется в использовании .split(','). Этот метод разделяет содержимое ячейки только по запятым. Вероятно, ожидаемое поведение - разделять текст также и по переносам строк в рамках каждой итерируемой ячейки.
Для разделения по переносам строк используйте .split('\n').
Если же необходимо обрабатывать оба типа разделителей (и переносы строк, и запятые), то может потребоваться комбинированный подход: сначала разбить содержимое ячейки на строки с помощью .split('\n'), а затем, например, каждую полученную непустую строку дополнительно разбить по запятым с помощью .split(',')