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)
    

    什么使生成的文件中出现空行?当我用记事本检查文件时,没有空行。