Untitled
unknown
python
2 years ago
2.9 kB
10
Indexable
cbrace_counter = 0
nbrace_counter = 0
sbrace_counter = 0
stack = ['', '']
def linefeed_checker(line, flag, yaml_file):
global cbrace_counter, nbrace_counter, sbrace_counter, stack
# yaml_file1 = open('D:/Sublime Text/Projects/YAML_file#1.yaml', 'w')
if line != (' ' * len(line)) and line[-2:] != '- ':
if '\":' in line:
line = line.replace('\"', '', 2)
yaml_file.write(line + '\n')
if stack[-1] == '[' or (stack[-2] == '[' and stack[-1] == '{' and flag):
line = ' ' * (cbrace_counter + sbrace_counter - 1) + '- '
else:
line = ' ' * (cbrace_counter + sbrace_counter)
# yaml_file1.close()
return line
def converter(path_to_json, path_to_yaml):
json_file = open(path_to_json, 'r')
# json_file = json_file.readlines()[1:-1]
yaml_file = open(path_to_yaml, 'w')
text = ''
for line in json_file.readlines()[1:-1]: # Убираем ненужную табуляцию
ind1 = 0
while line[ind1] == ' ':
ind1 += 1
ind2 = len(line) - 2
while line[ind2] == ' ':
ind2 -= 1
text += line[ind1:ind2 + 1]
global cbrace_counter, nbrace_counter, sbrace_counter, stack
line = ''
# print(file)
for ch in text:
if ch == '{':
stack.append('{')
if stack[-2] != '[':
cbrace_counter += 1
line = linefeed_checker(line, False, yaml_file)
else:
line = linefeed_checker(line, True, yaml_file)
elif ch == '}':
if stack[-2] != '[':
cbrace_counter -= 1
stack.pop()
line = linefeed_checker(line, False, yaml_file)
elif ch == '[':
sbrace_counter += 1
stack.append('[')
line = linefeed_checker(line, False, yaml_file)
elif ch == ']':
sbrace_counter -= 1
stack.pop()
line = linefeed_checker(line, False, yaml_file)
elif ch == ',':
if '\\n' in line:
# print(line)
d = '|'
# print(line[-2:])
if line[-2:] != 'n\"':
d += '-'
else:
line = line[:len(line) - 3] + '\"'
line = line.replace(':', f': {d}\n ', 1)
line = line.replace('\\n', f'\n {" " * (cbrace_counter + sbrace_counter)}')
line = line.replace('\"', '')
# print(line)
line = linefeed_checker(line, False, yaml_file)
else:
line += ch
linefeed_checker(line, False, yaml_file)
json_file.close()
yaml_file.close()
cbrace_counter = 0
nbrace_counter = 0
sbrace_counter = 0
stack = ['', '']
Editor is loading...
Leave a Comment