Python 3.x 在Python 3.6中使用csv模块时出现空列表
这是一本书中的代码Python 3.x 在Python 3.6中使用csv模块时出现空列表,python-3.x,csv,Python 3.x,Csv,这是一本书中的代码 import csv villains = [['Doctor', 'No'], ['Rosa', 'Klebb'], ['Mister', 'Big'], ['Auric', 'Goldfinger'], ['Ernst', 'Blofeld'], ] with open('villains', 'wt') as fout: csvout = cs
import csv
villains = [['Doctor', 'No'],
['Rosa', 'Klebb'],
['Mister', 'Big'],
['Auric', 'Goldfinger'],
['Ernst', 'Blofeld'],
]
with open('villains', 'wt') as fout:
csvout = csv.writer(fout)
csvout.writerows(villains)
with open('villains', 'rt') as fin:
cin = csv.reader(fin)
villains = [row for row in cin]
print(villains)
我的结果是
[['Doctor', 'No'], [],
['Rosa', 'Klebb'], [],
['Mister', 'Big'], [],
['Auric', 'Goldfinger'], [],
['Ernst', 'Blofeld'], []]
[['Doctor', 'No'],
['Rosa', 'Klebb'],
['Mister', 'Big',
['Auric', 'Goldfinger'],
['Ernst', 'Blofeld']]
预期结果是
[['Doctor', 'No'], [],
['Rosa', 'Klebb'], [],
['Mister', 'Big'], [],
['Auric', 'Goldfinger'], [],
['Ernst', 'Blofeld'], []]
[['Doctor', 'No'],
['Rosa', 'Klebb'],
['Mister', 'Big',
['Auric', 'Goldfinger'],
['Ernst', 'Blofeld']]
但是我的结果中有一些空列表。
我不明白为什么会出现这些
我的问题
提前感谢。空行在那里,因为生成的文件包含空行:
Doctor,No
Rosa,Klebb
Mister,Big
Auric,Goldfinger
Ernst,Blofeld
这可以通过在读取文件时添加if row
来解决:
with open('villains', 'r') as fin:
cin = csv.reader(fin)
villains = [row for row in cin if row]
print(villains)
# [['Doctor', 'No'], ['Rosa', 'Klebb'], ['Mister', 'Big'], ['Auric', 'Goldfinger'],
# ['Ernst', 'Blofeld']]
或者,您可以通过将newline=''
传递到open
生成不带空行的文件:
with open('villains', 'wt', newline='') as fout:
csvout = csv.writer(fout)
csvout.writerows(villains)
什么使生成的文件中出现空行?当我用记事本检查文件时,没有空行。