关于txt中缩进问题的一个简单问题

A simple question about the indentation problem in txt

def sav_dic(self):
    f2 = open('my_dic.txt', 'a')
    for j in range(len(re_doc2)):
        f2.write(re_doc2[j]+':'+def_lst[j])
    f2.close()

以上是class中的一个函数。另外,内容已经写在my_dic.txt.

A:Contents of B
B:Contents of B

我想通过以上功能添加内容。但是这里有一个问题。我准备把C的内容加到E里,我希望的理想情况是这样的。

A:Contents of B
B:Contents of B
C:Contents of C
D:Contents of D
E:Contents of E

但是,如果我使用上面的函数,结果如下。

A:Contents of B
B:Contents of BC:Contents of C
D:Contents of D
E:Contents of E

我又试着写了一个转义码,但是这次是这样的

def sav_dic(self):
    f2 = open('my_dic.txt', 'a')
    for j in range(len(re_doc2)):
        f2.write('\n'+re_doc2[j]+':'+def_lst[j])
    f2.close()

A:Contents of B
B:Contents of B
C:Contents of C

D:Contents of D

E:Contents of E

我对此很烦恼。如何解决这个问题?

您可以在向 f2 写入新行之前写一个 '\n'。

def sav_dic(self):
    f2 = open('my_dic.txt', 'a')
    f2.write('\n')
    for j in range(len(re_doc2)):
        f2.write(re_doc2[j]+':'+def_lst[j])
    f2.close()

感谢马蒂亚斯的评论。可以这样写:

def sav_dic(self):
    with open('my_dic.txt', 'a') as f2:
        f2.write('\n')
        for x, y in zip(re_doc2, def_lst):
            f2.write(f'{x}:{y}')
        

你只能在你写的第一行写换行符

for j in range(len(re_doc2)):
    if j == 0:
        f2.write('\n')
    f2.write(re_doc2[j]+':'+def_lst[j])

或更新写入 my_dic.txt 的代码以始终以 \n

结束行