Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.63 KB | None | 0 0
  1. """Create schedule from the given file."""
  2. import re
  3.  
  4.  
  5. def get_table_size(table):
  6. """Create schedule from the given file."""
  7. sizes = []
  8. for i in table:
  9. sizes.append(len(i))
  10. x = max(sizes) + 1
  11. return x, sizes
  12.  
  13.  
  14. def create_table(dict1, keys):
  15. """Create schedule from the given file."""
  16. table = []
  17. new_keys = []
  18. for i in keys:
  19. if i not in new_keys:
  20. new_keys.append(i)
  21. for i in range(len(new_keys)):
  22. new_keys[i].strip()
  23. for i in range(len(new_keys)):
  24. if len(keys[i]) == 8:
  25. table.append("| " + new_keys[i] + " |")
  26. else:
  27. table.append("| " + new_keys[i] + " |")
  28. for j in dict1[new_keys[i]][0][:-1]:
  29. table[i] += " " + j.lower() + ","
  30. table[i] += " " + dict1[new_keys[i]][0][-1].lower()
  31. return table
  32.  
  33.  
  34. def get_hour_min(keys, ):
  35. """Create schedule from the given file."""
  36. new_keys = []
  37. for i in keys:
  38. if i == "0 AM":
  39. new_keys.append("12:00")
  40. else:
  41. if len(str(i)) == 4:
  42. hours = 0
  43. minutes = int(i[0])
  44. else:
  45. minutes = int(int(i[:3]) % 60)
  46. hours = int((int(i[:3]) - minutes) / 60)
  47. if hours == 0:
  48. hours = 12
  49. if minutes < 10:
  50. new_keys.append(str(hours) + ":" + "0" + str(minutes))
  51. else:
  52. new_keys.append(str(hours) + ":" + str(minutes))
  53. for i in range(len(keys)):
  54. if keys[i][-2:] == "AM":
  55. new_keys[i] += " AM"
  56. else:
  57. new_keys[i] += " PM"
  58. return new_keys
  59.  
  60.  
  61. def normalize_times(keys, values):
  62. """Create schedule from the given file."""
  63. new_keys = []
  64. new_keys2 = []
  65. for i in range(len(keys)):
  66. for j in keys[i]:
  67. if not j.isdigit():
  68. x = keys[i].replace(j, ":")
  69. keys.insert(i, x)
  70. del keys[i + 1]
  71. for i in keys:
  72. if i[-2] == ":":
  73. new_keys.append(i[:-1] + "0" + i[-1])
  74. else:
  75. new_keys.append(i)
  76. for i in new_keys:
  77. if len(i) != 5:
  78. new_keys2.append("0" + i)
  79. else:
  80. new_keys2.append(i)
  81. new_keys3, values = normalize_times3(new_keys2, values)
  82. return new_keys3, values
  83.  
  84.  
  85. def normalize_times3(new_keys2, values):
  86. """Create schedule from the given file."""
  87. new_keys3 = []
  88. new_keys5 = []
  89. new_values = []
  90. for i in range(len(new_keys2)):
  91. x, y = new_keys2[i].split(":")
  92. if not (int(x) > 23 or int(y) > 59):
  93. new_keys5.append(new_keys2[i])
  94. new_values.append(values[i])
  95. for i in new_keys5:
  96. x, y = i.split(":")
  97. z = int(x) * 60 + int(y)
  98. new_keys3.append(z)
  99. return new_keys3, new_values
  100.  
  101.  
  102. def normalize_keys2(new_keys3):
  103. """Create schedule from the given file."""
  104. new_keys4 = []
  105. new_keys3.sort()
  106. for i in new_keys3:
  107. if i > (12 * 60):
  108. new_keys4.append(str(i - (12 * 60)) + " PM")
  109. else:
  110. new_keys4.append(str(i) + " AM")
  111. return new_keys4
  112.  
  113.  
  114. def create_dict(keys, values):
  115. """Create schedule from the given file."""
  116. dict1 = {}
  117. for i in range(len(keys)):
  118. dict1[keys[i]] = []
  119. for i in range(len(values)):
  120. if values[i] not in dict1[keys[i]]:
  121. dict1[keys[i]].append(values[i])
  122. return dict1
  123.  
  124.  
  125. def read_from_file(input_filename):
  126. """Read the file."""
  127. file_object = open(input_filename, 'r') # Avame faili lugemiseks
  128. results = file_object.readlines()
  129. keys1 = " "
  130. for i in range(len(results) - 1):
  131. keys1 += (results[i][:-1]) + " "
  132. keys1 += (results[-1]) + " "
  133. return keys1
  134.  
  135.  
  136. def create_schedule_file(input_filename: str, output_filename: str) -> None:
  137. """Create schedule file from the given input file."""
  138. string = create_schedule_string(read_from_file(input_filename))
  139. with open(output_filename, 'w', newline='') as file:
  140. file.write(string)
  141.  
  142.  
  143. def create_schedule_string(input_string: str) -> str:
  144. """Create schedule string from the given input string."""
  145. short = True
  146. input_string = " " + input_string
  147. keys = []
  148. values = []
  149. new_values = []
  150. regex = r"((( |\n)[0-9]{1,2}(\D)[0-9]{1,2})( )+([a-zA-Z]+))"
  151. matches = re.finditer(regex, input_string, re.MULTILINE | re.UNICODE)
  152. for i in matches:
  153. keys.append(i.group(2)[1:])
  154. values.append(i.group(6).lower())
  155. keys1, values = normalize_times(keys, values)
  156. if len(keys1) == 0:
  157. return "------------------\n| time | items |\n------------------\n| No items found |\n------------------"
  158. dict1 = create_dict(keys1, values)
  159. keys1.sort()
  160. for i in keys1:
  161. new_values.append(dict1[i])
  162. dict2 = create_dict(get_hour_min(normalize_keys2(keys1)), new_values)
  163. table = create_table(dict2, get_hour_min(normalize_keys2(keys1)))
  164. final = ""
  165. x, sizes = get_table_size(table)
  166. for i in table:
  167. if i[1] != ":":
  168. short = False
  169. if x < 16:
  170. x = 16
  171. if not short:
  172. start_end = "-" * (x + 1)
  173. final += start_end + "\n"
  174. final += "|" + " " * 5 + "time" + " |" + " items" + " " * (x - 18) + "|\n"
  175. final += start_end + "\n"
  176. for i in range(len(table)):
  177. if table[i][1] == ":":
  178. final += table[i] + " " * (x - 1 - sizes[i]) + "|\n"
  179. else:
  180. final += table[i] + " " * (x - sizes[i]) + "|\n"
  181. else:
  182. start_end = "-" * (x + 1)
  183. final += start_end + "\n"
  184. final += "|" + " " * 4 + "time" + " |" + " items" + " " * (x - 17) + "|\n"
  185. final += start_end + "\n"
  186. for i in range(len(table)):
  187. final += table[i] + " " * (x - sizes[i] - 1) + " |\n"
  188. final += start_end
  189. return final
  190.  
  191.  
  192. if __name__ == '__main__':
  193. 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 "))
  194. create_schedule_file("schedule_input.txt", "schedule_output.txt")
  195. print(create_schedule_string("10:00 jabada"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement