python 生成的 csv 中的空行

Empty rows in python generated csv

我正在开发自定义键盘。我正在使用 .csv 文件来存储各个键绑定。它的 csv 看起来像这样:

1,2,3,4,5
q,w,e,r,t
a,s,d,f,g
z,x,c,v,b
6,7,8,9,0
y,u,i,o,p

现在,我有一个函数可以读取文件并将其放入列表中:

import csv
bMap = []
# initial fillout of bMap
f = open('bMap.csv', 'r')
contents = csv.reader(f, delimiter=',', quotechar='|')
for row in contents:
    bMap.append(row)
f.close()
print(bMap)

这是我的输出:

[['1', 'y', '3', '4', '5'], ['q', 'w', 'e', 'r', 't'], ['a', 's', 'd', 'f', 'g'], ['z', 'x', 'c', 'v', 'b'], ['6', '7', '8', '9', '0'], ['y', 'u', 'i', 'o', 'p']]

到目前为止,还不错。现在假设用户将 '2' 的绑定更改为 'x'

bMap[0][1] = 'y'
print(bMap)

当然,输出与列表时间相同,但使用 'x' 而不是 '2'。

现在我想让它保存对上述 .csv 文件的更改。我正在使用以下功能:

f = open('bMap.csv', 'w')
writer = csv.writer(f, delimiter=',', quotechar='|')
writer.writerows(bMap)
f.close()

现在,当我打开 csv 文件时,它看起来如下:

1,y,3,4,5

q,w,e,r,t

a,s,d,f,g

z,x,c,v,b

6,7,8,9,0

y,u,i,o,p

出于某种原因,我有这些空行。现在,如果我再次 运行 代码,它将无法正常工作。我怎样才能摆脱它们?为什么要写它们?

解决您的问题很简单。只需相应地更改此行即可。

f = open('bMap.csv', 'w', newline='')

有关详细信息,请查看下面的 link。