Skip to content
Snippets Groups Projects
text_processor.py 3.96 KiB
Newer Older
file = open("md1.txt", encoding="utf-8")

arr = []
for i in file:
    arr.append(i.rstrip("\n"))

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")