Вы пытаетесь добавить день к дате отъезда, если вылет до прибытия.Для этого вам нужно использовать библиотеку Python datetime
.Начните с объединения компонентов даты и времени в одну строку, а затем преобразуйте строку в объект datetime.Затем вы можете сделать простое сравнение, чтобы определить, предшествует ли одна дата другой.Если это так, используйте timedelta
в день до даты отъезда.Затем преобразуйте это обратно в строку даты и обновите третий столбец (то есть row[2]
).Затем обновленные данные могут быть записаны обратно в отдельный файл CSV:
from datetime import datetime, timedelta
import csv
one_day = timedelta(days=1)
with open('times.csv', newline='') as f_input, open('times_updated.csv', 'w', newline='') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
header = next(csv_input)
csv_output.writerow(header)
for row in csv_input:
arrival_time = datetime.strptime('{} {}'.format(row[0], row[1]), '%Y/%m/%d %H:%M')
departure_time = datetime.strptime('{} {}'.format(row[2], row[3]), '%Y/%m/%d %H:%M')
if departure_time < arrival_time:
departure_time += one_day
row[2] = departure_time.strftime('%Y/%m/%d')
csv_output.writerow(row)
Это даст вам выходной файл CSV, содержащий:
#Arrival_Date#,#Arrival_Time#,#Departure_Date#,#Departure_Time#
2017/01/01,23:30,2017/01/02,00:30
2017/02/01,23:30,2017/02/01,23:40
2017/03/01,15:45,2017/03/01,17:30
2017/04/10,23:50,2017/04/11,00:30
Обратите внимание, это предполагает, что вы используете Python3.x и что ваши CSV-файлы отформатированы как обычные CSV-файлы, например aaa,bbb,ccc,ddd