Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """Create schedule from the given file."""
- import re
- def get_table_size(table):
- """Create schedule from the given file."""
- sizes = []
- for i in table:
- sizes.append(len(i))
- x = max(sizes) + 1
- return x, sizes
- def create_table(dict1, keys):
- """Create schedule from the given file."""
- table = []
- new_keys = []
- for i in keys:
- if i not in new_keys:
- new_keys.append(i)
- for i in range(len(new_keys)):
- new_keys[i].strip()
- for i in range(len(new_keys)):
- if len(keys[i]) == 8:
- table.append("| " + new_keys[i] + " |")
- else:
- table.append("| " + new_keys[i] + " |")
- for j in dict1[new_keys[i]][0][:-1]:
- table[i] += " " + j.lower() + ","
- table[i] += " " + dict1[new_keys[i]][0][-1].lower()
- return table
- def get_hour_min(keys, ):
- """Create schedule from the given file."""
- new_keys = []
- for i in keys:
- if i == "0 AM":
- new_keys.append("12:00")
- else:
- if len(str(i)) == 4:
- hours = 0
- minutes = int(i[0])
- else:
- minutes = int(int(i[:3]) % 60)
- hours = int((int(i[:3]) - minutes) / 60)
- if hours == 0:
- hours = 12
- if minutes < 10:
- new_keys.append(str(hours) + ":" + "0" + str(minutes))
- else:
- new_keys.append(str(hours) + ":" + str(minutes))
- for i in range(len(keys)):
- if keys[i][-2:] == "AM":
- new_keys[i] += " AM"
- else:
- new_keys[i] += " PM"
- return new_keys
- def normalize_times(keys, values):
- """Create schedule from the given file."""
- new_keys = []
- new_keys2 = []
- for i in range(len(keys)):
- for j in keys[i]:
- if not j.isdigit():
- x = keys[i].replace(j, ":")
- keys.insert(i, x)
- del keys[i + 1]
- for i in keys:
- if i[-2] == ":":
- new_keys.append(i[:-1] + "0" + i[-1])
- else:
- new_keys.append(i)
- for i in new_keys:
- if len(i) != 5:
- new_keys2.append("0" + i)
- else:
- new_keys2.append(i)
- new_keys3, values = normalize_times3(new_keys2, values)
- return new_keys3, values
- def normalize_times3(new_keys2, values):
- """Create schedule from the given file."""
- new_keys3 = []
- new_keys5 = []
- new_values = []
- for i in range(len(new_keys2)):
- x, y = new_keys2[i].split(":")
- if not (int(x) > 23 or int(y) > 59):
- new_keys5.append(new_keys2[i])
- new_values.append(values[i])
- for i in new_keys5:
- x, y = i.split(":")
- z = int(x) * 60 + int(y)
- new_keys3.append(z)
- return new_keys3, new_values
- def normalize_keys2(new_keys3):
- """Create schedule from the given file."""
- new_keys4 = []
- new_keys3.sort()
- for i in new_keys3:
- if i > (12 * 60):
- new_keys4.append(str(i - (12 * 60)) + " PM")
- else:
- new_keys4.append(str(i) + " AM")
- return new_keys4
- def create_dict(keys, values):
- """Create schedule from the given file."""
- dict1 = {}
- for i in range(len(keys)):
- dict1[keys[i]] = []
- for i in range(len(values)):
- if values[i] not in dict1[keys[i]]:
- dict1[keys[i]].append(values[i])
- return dict1
- def read_from_file(input_filename):
- """Read the file."""
- file_object = open(input_filename, 'r') # Avame faili lugemiseks
- results = file_object.readlines()
- keys1 = " "
- for i in range(len(results) - 1):
- keys1 += (results[i][:-1]) + " "
- keys1 += (results[-1]) + " "
- return keys1
- def create_schedule_file(input_filename: str, output_filename: str) -> None:
- """Create schedule file from the given input file."""
- string = create_schedule_string(read_from_file(input_filename))
- with open(output_filename, 'w', newline='') as file:
- file.write(string)
- def create_schedule_string(input_string: str) -> str:
- """Create schedule string from the given input string."""
- short = True
- input_string = " " + input_string
- keys = []
- values = []
- new_values = []
- regex = r"((( |\n)[0-9]{1,2}(\D)[0-9]{1,2})( )+([a-zA-Z]+))"
- matches = re.finditer(regex, input_string, re.MULTILINE | re.UNICODE)
- for i in matches:
- keys.append(i.group(2)[1:])
- values.append(i.group(6).lower())
- keys1, values = normalize_times(keys, values)
- if len(keys1) == 0:
- return "------------------\n| time | items |\n------------------\n| No items found |\n------------------"
- dict1 = create_dict(keys1, values)
- keys1.sort()
- for i in keys1:
- new_values.append(dict1[i])
- dict2 = create_dict(get_hour_min(normalize_keys2(keys1)), new_values)
- table = create_table(dict2, get_hour_min(normalize_keys2(keys1)))
- final = ""
- x, sizes = get_table_size(table)
- for i in table:
- if i[1] != ":":
- short = False
- if x < 16:
- x = 16
- if not short:
- start_end = "-" * (x + 1)
- final += start_end + "\n"
- final += "|" + " " * 5 + "time" + " |" + " items" + " " * (x - 18) + "|\n"
- final += start_end + "\n"
- for i in range(len(table)):
- if table[i][1] == ":":
- final += table[i] + " " * (x - 1 - sizes[i]) + "|\n"
- else:
- final += table[i] + " " * (x - sizes[i]) + "|\n"
- else:
- start_end = "-" * (x + 1)
- final += start_end + "\n"
- final += "|" + " " * 4 + "time" + " |" + " items" + " " * (x - 17) + "|\n"
- final += start_end + "\n"
- for i in range(len(table)):
- final += table[i] + " " * (x - sizes[i] - 1) + " |\n"
- final += start_end
- return final
- if __name__ == '__main__':
- print(create_schedule_string("start mghrhvab mrayvadar uebcxiezgs jaeagsegg uttgynvbo iwesgpne 19?19 KaBGILD0a njgmzzbxh mczezeubsq ulovkicy lalzhbyjxr jtgthqmo kpydino nlydeeq 18.31 kABg1ID0a brashvggob 15?52 YbHYiEfzg usovr eklpdvzgdq kodnmn giqatfacz cflslcnhf 04-15 MFCvs 17b22 ryHKaPV1F dtvpiu aojnfij 1pter yupyz bxrslx uajjf 4?38 mfcvS vdrfeuy 13.5 irGHMof wrucwfkm sfpajhpow ziztkrtub clxcsbilq kcyqr gmtifd refqsptc xlibvwbif yaqgp pqdhjgrqyg 21101 ybHYiEFzg weukoo dpqonwin csdysafxt lesnewp jbmerh fvauunzqh wuenhzsdt darbazr uhbtha 19.53 yBhyiefZG iyzzhbm zwvkl cbmnk unfxwrepty roarl ujplgzpn 21,5 aAMje kngkoexr 3819 irGhM0f ysrsatjoqb vycvjxczsn 1pdpegplcd xcqxgq 14=27 MFcVs uznlyb pglxkvdwnn awxoygkmqm lkoxvtjgkp qfexa 16b53 mfcVS ujoxbws klgwvb qcyyssw tgkaulx 17-25 kaBgL1d0A kvucn qfqkyesnd bkcldjlf lsyvshtjjj duucsxtjcc rmnebaa 17-46 aAmjE usamhexx zxzpylte sitbhp 19811 ylNyiefzG frbyaw qfpnpr cihjh jrvsdw wlxru 13:58 gfgDf ujyitoyiw kjhzn stkiaxwyzw 21-9 Dbype jvwhifhp ebaxtj fxoudmxkzv ehdug eooustn usuxffmb rtdhyeuxew obpbzr 21=53 gfGdF ztlmemmfxh xedixlj adbqgdhxe kghbiib 9:46 gfgDF gxklyb vbjtpuigre kpjgxksj olxyesvwh 25!6 oiPksmRD oiwzaxsh gicpyhd acrozvhkl ilikqheyts qbeby yomannzz 15A31 aAmJe grzrgwztg qwalq thryiot edeuh oeovwpg twgwquhjy bycugclli ldkxjnj btleferqfn dqrynko 13b35 WaYfV1FF1 fbnxxnwpkn chxjrydx ortejm cvcedwz kbqip pymuy 25b16 KaBG11Doa wsavzpa 0A55 dBYPE aprevqc ucvrcmabk gwuko 18820 wAYFVLfFL twaoyxd cgamggupx vpeqkwprf bvsmbjiovq xvsshma cnqmngilol dhlrdsy wdxgpa hnywercws 20A25 rYhkaPVLf flyetid zbpvm qutudddc duqko fpftv pdtpy fpqvtj igtqdgv "))
- create_schedule_file("schedule_input.txt", "schedule_output.txt")
- print(create_schedule_string("10:00 jabada"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement