Biorąc pod tablicę tekstu wejściowegoalgorytm Pythona do zrobienia w pytonic?
input_array = [
'JUNK', 'Mon', 'JUNK', '10am', 'JUNK', '-', ' 5pm',
'6pm', '-', '9pm', 'JUNK', 'Tue', '10am', '-', 'JUNK', '5pm'
]
powinny być zamienione na JSON
[
{
"weekday_name": "monday",
"starting_time": "10am",
"ending_time": "5pm"
},
{
"weekday_name": "monday",
"starting_time": "6pm",
"ending_time": "10pm"
},
...
]
Choć jest to prosty algorytm, jestem zmuszony do tworzenia zmiennych tymczasowych, które są zwykle uważane non-pythonic.
Kod z brzydkich zmiennych tymczasowych
import pprint
input_array = ['JUNK','Mon','JUNK','10am','JUNK','-','5pm','6pm','-','9pm','JUNK','Tue','10am','-','JUNK','5pm']
business_hours = []
start_hours = None
end_hours = None
current_day = None
dash_found = False
days_of_the_week = {}
days_of_the_week['Mon'] = 'monday'
days_of_the_week['Tue'] = 'tuesday'
days_of_the_week['Wed'] = 'wednesday'
days_of_the_week['Thu'] = 'thursday'
days_of_the_week['Fri'] = 'friday'
days_of_the_week['Sat'] = 'saturday'
days_of_the_week['Sun'] = 'sunday'
for x in input_array:
if x in days_of_the_week:
current_day = days_of_the_week[x]
elif x[0].isdigit() and dash_found == False:
starting_time = x
elif x == '-':
dash_found = True
elif x[0].isdigit() and dash_found == True:
ending_time = x
business_hours.append({"weekday_name":current_day,"starting_time":starting_time,"ending_time":ending_time})
dash_found = False
pprint.pprint(business_hours)
mogę zrobić mój kod mniej brzydki i osiągnąć to samo bez konieczności tworzenia wielu zmiennych tymczasowych w Pythonie?
są ustawione pozycje? Czy input_array [1] jest zawsze dniem? czy "Śmieci" oznaczają dowolną liczbę przedmiotów, których nie chcesz? – KameeCoding
Czy to normalne, że macierzy brakuje na jeden dzień w godzinach 18-18? – Holt
@Holt Oznacza to, że powinien zostać uwzględniony w tym samym dniu. (ten sam dzień, ale dwa godziny pracy) – wolfgang