退格似乎不适用于python

1 python io dictionary file backspace

network={1:[2,3,4],2:[1,3,4], 3:[1,2], 4:[1,3,5], 5:[6,7,8], 6:[5,8],7:[5,6], 8:[5,6,7]}
str1='network.csv'
output = open(str1,'w')
for ii1 in network.keys():
    output.write(repr(ii1)+":[")
    for n in network[ii1]:
        output.write(' %s,'%(repr(n)))
    output.write('\b'+']\n')
output.close()
Run Code Online (Sandbox Code Playgroud)

我期望的是:

1:[ 2, 3, 4]
2:[ 1, 3, 4]
3:[ 1, 2]
4:[ 1, 3, 5]
5:[ 6, 7, 8]
6:[ 5, 8]
7:[ 5, 6]
8:[ 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

1:[ 2, 3, 4,]
2:[ 1, 3, 4,]
3:[ 1, 2,]
4:[ 1, 3, 5,]
5:[ 6, 7, 8,]
6:[ 5, 8,]
7:[ 5, 6,]
8:[ 5, 6, 7,]
Run Code Online (Sandbox Code Playgroud)

我是新手....有人可以帮忙吗?

NPE*_*NPE 5

"\b"只需插入ASCII退格字符; 它不会从输出文件中删除刚刚写入的字符.这就是您的代码没有按预期运行的原因.

现在,要修复它,你可以替换它

for ii1 in network.keys():
    output.write(repr(ii1)+":[")
    for n in network[ii1]:
        output.write(' %s,'%(repr(n)))
    output.write('\b'+']\n')
Run Code Online (Sandbox Code Playgroud)

for ii1 in network.keys():
    output.write(repr(ii1)+":[ ")
    output.write(", ".join(map(repr, network[ii1])))
    output.write(']\n')
Run Code Online (Sandbox Code Playgroud)

或者,进一步改善它

for k, v in network.items():
    print >>output, "%s:[ %s]" % (repr(k), ", ".join(map(repr, v)))
Run Code Online (Sandbox Code Playgroud)

最后,如果键是简单的整数,如您的示例所示,那么repr(k)可以简化为k.此外,如果字典中的值是整数列表或某些,那么整个", ".join(map(repr, v))舞蹈可能是不必要的.