Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import codecs
import json
def text_process(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>')}")
input_count = stek[-1]
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>|"
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])}|"
data = f"|{'<br>'.join(data[:-1 * input_count])}|{'<br>'.join(data[-1 * input_count:])}|"
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)
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
return new_arr
f = codecs.open("2.4/24.ipynb", 'r', encoding="utf-8")
source = f.read()
y = json.loads(source)
f.close()
inp_data = open("md.txt", encoding="utf-8")
arr = []
tarr = []
for i in inp_data:
if i == "/py\n":
arr.append(tarr)
tarr = []
elif i == "/md\n":
arr.append(tarr)
tarr = []
else:
tarr.append(i.strip("\n"))
arr.append(tarr)
del arr[0]
data = {'cells':[],
'metadata': {'kernelspec': {'display_name': 'Python 3', 'language': 'python', 'name': 'python3'},
'language_info': {'name': 'python', 'version': '3.11.1'}},
'nbformat': 4,
'nbformat_minor': 2}
for i in range(len(arr)):
if i % 2 == 0:
py_data = {'cell_type': 'markdown',
'metadata': {},
'source': [],}
new_arr = text_process(arr[i])
for s in new_arr:
py_data['source'] += [s]
else:
py_data = {'cell_type': 'code',
'execution_count': None,
'metadata': {},
'outputs': [],
'source': [],}
for s in arr[i]:
py_data['source'] += [s]
data['cells'] += [py_data]
with open('output.ipynb', 'w') as file:
# Write the JSON data to the file
json.dump(data, file)
file.close()