file = open("md1.txt", encoding="utf-8") arr = [] for i in file: arr.append(i.rstrip("\n")) print(arr) new_arr = [] new_arr.append(f"## **{arr.pop(0)}**") for _ in range(4): del arr[0] stek = [] p = False li_c = False li = False li_c2 = False for s in arr: if "Пример" in s: if p: new_arr.append(f"|||{'<br>'.join(stek).rstrip('<br>')}") else: new_arr.append("<br>".join(stek).rstrip("<br>")) p = True stek = [] new_arr.append(f"### **{s}**") elif p: if s == "Ввод\tВывод": if stek: new_arr.append(f"|||{'<br>'.join(stek).rstrip('<br>')}") new_arr.append("<br>".join(stek).rstrip("<br>")) stek = [] new_arr.append("|Ввод |Вывод|") new_arr.append("|-----|-----|") else: stek.append(s) elif s == "Формат ввода" or s == "Формат вывода" or s == "Примечание": new_arr.append("<br>".join(stek).rstrip("<br>")) stek = [] new_arr.append(f"### **{s}**") else: if s and s[-1] == ":": li_c = True stek.append(s) elif li_c: li_c = False if s == "": li = True new_arr.append("<br>".join(stek) + "<br>") stek = [] elif li: if not li_c2: if s[-1] == ";": li_c2 = True else: li = False stek.append(s) if li_c2: new_arr.append(f"* {s}") if s[-1] == ".": li = False new_arr.append("") li_c2 = False else: stek.append(s) new_arr.append(f"|||{'<br>'.join(stek[:-1]).rstrip('<br>')}") file.close() input_count = stek[-1] if input_count != "_": input_count = int(input_count) for i in range(len(new_arr)): if new_arr[i][:3] == "|||": data = new_arr[i][3:].split("<br>") if input_count == "_": data = f"|{'<br>'.join(data)}||" elif input_count > 0: if 2 * input_count > len(data): data = f"|{'<br>'.join(data[:input_count])}|{'<br>'.join(data[input_count:])}<br>{'<br>'.join([' '] * (2 * input_count - len(data)))}<br>|" elif 2 * input_count == len(data): data = f"|{'<br>'.join(data[:input_count])}|{'<br>'.join(data[input_count:])}|" else: data = f"|{'<br>'.join(data[:input_count])}<br>{'<br>'.join([' '] * (len(data) - 2 * input_count))}<br>|{'<br>'.join(data[input_count:])}<br>|" else: if -2 * input_count > len(data): data = f"|{'<br>'.join(data[:len(data) + input_count])}<br>{'<br>'.join([' '] * (-2 * input_count - len(data)))}<br>|{'<br>'.join(data[:-1 * input_count])}|" elif -2 * input_count == len(data): data = f"|{'<br>'.join(data[:-1 * input_count])}|{'<br>'.join(data[-1 * input_count:])}|" else: data = f"|{'<br>'.join(data[:len(data) + input_count])}|{'<br>'.join(data[len(data) + input_count:])}<br>{'<br>'.join([' '] * (len(data) - -2 * input_count))}<br>|" new_arr[i] = data for i in range(len(new_arr)): if new_arr[i] and (new_arr[i][0] == "|" or new_arr[i][0] == "#"): continue elems = new_arr[i].split("<br>") del_ind = [] for j in range(len(elems) - 1): if len(elems[j]) == 1 and elems[j] == elems[j + 1][0]: del_ind.append(j) if del_ind: for j in del_ind[::-1]: if j: buff = elems.pop(j + 1) elems[j - 1] = elems[j - 1] + "$" + buff[0] + "$" + buff[1:] del elems[j] new_arr[i] = "<br>".join(elems) new_file = open("md1.txt", "w+", encoding="utf-8") for s in new_arr: new_file.write(s + "\n") new_file.close() print(*new_arr, sep="\n")