【问题标题】:Empty rows in python generated csvpython生成的csv中的空行
【发布时间】:2021-12-04 08:00:39
【问题描述】:

我正在开发自定义键盘。我正在使用 .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

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

【问题讨论】:

  • 您的问题中似乎有一些拼写错误(例如,输出应该是['1', '2', '3', '4', '5'] 而不是['1', 'y', '3', '4', '5'],而且您似乎在整篇文章中混用了xy )。此外,如果您创建一个minimal reproducible example,您的问题可能会更短。基本上,您的原始 CSV 内容 + 您的两个代码块组合 + 最终输出足以提出这个问题。关于替换值的部分与问题并不真正相关,只会分散注意力。

标签: python csv writer


【解决方案1】:

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

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

欲了解更多信息,请查看下面的链接。

Specify Newline character ('\n') in reading csv using Python

【讨论】:

  • 欢迎来到 Stack Overflow,Patrik。找到此答案会很有帮助,但是,最好将问题标记为重复,而不是复制答案。这样,可以更轻松地找到所有当前和未来的答案,投票系统将帮助我们确定最有用的答案。
  • 这实际上有帮助,因为这样总会有空行,至少是一致的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多