我想将列表 ['TEXT', 'TEXT 1\nTEXT 2', ['text 3', 'text 4']] 写入文本文件,并在读取文本文件时获取相同的列表
mas = ['ТЕКСТ', 'ТЕКСТ 1\nТЕКСТ 2', ['текст 3', 'текст 4']]
with open('C:\\Code\\ST3\\e minor code\\profile.txt', 'w') as f:
text = ''
for i in range(len(mas)):
if i == 0 or i == 1:
text += '\n' + mas[i] + '\n'
else:
text += '\n' + '\n'.join(mas[i]) + '\n\n'
f.write(text)
with open('C:\\Code\\ST3\\e minor code\\profile.txt', 'r') as f:
mas_in = [line.strip() for line in f.readlines()]
mas_out = []
mas_end = [i for i in range(len(mas_in)) if mas_in[i] == '' or i == 0 or i + 1 == len(mas_in)]
for i in range(len(mas_end) - 1):
mas = [mas_in[j] for j in range(mas_end[i] + 1, mas_end[i + 1])]
if i == 0:
mas_out.append(mas[0])
elif i == 1:
mas_out.append('\n'.join(mas))
else:
mas_out.append(mas)
mas_in = mas_out
有没有更合理的方法来解决这个问题?
一种选择是另存为 json。
如果目标是将对象保存到文件中,然后从文件中恢复它。这就是pickle模块的用途。它旨在序列化和反序列化对象的结构。有了它,你还可以保存类,包括嵌套(不像 json)。没错,数据以二进制格式存储,而不是文本(与 json 不同)。
如果文件格式不重要,那么您可以这样做: