首页 > 解决方案 > Python:CSV 文件未正确读取

问题描述

我正在尝试读取 .csv 文件并打印其内容(行)。它似乎只在文件中间的某个地方开始打印。.csv 文件的内容是:

1975,J,Belgium,Finland,0
1975,J,Belgium,France,2
1975,J,Belgium,Germany,0
1975,J,Belgium,Ireland,12
1975,J,Belgium,Israel,1
1975,J,Belgium,Italy,6
1975,J,Belgium,Luxembourg,0
1975,J,Belgium,Malta,7
1975,J,Belgium,Monaco,0
1975,J,Belgium,Norway,0
1975,J,Belgium,Portugal,0
1975,J,Belgium,Spain,4
1975,J,Belgium,Sweden,0

这份名单一直延续到今年(2019 年),这些国家也发生了变化。当我运行此代码时:

import csv

def read_file(file_name):
    f = open(file_name, "rt", encoding="utf8")
    for l in csv.reader(f):
        print(l)

if __name__ == "__main__":
    read_file('myfile.csv')

我得到这个输出:

 'J', 'Iceland', 'The Netherlands', '2']
 ['1996', 'J', 'Iceland', 'Turkey', '0']
 ['1996', 'J', 'Iceland', 'United Kingdom', '4']
 ['1996', 'J', 'Ireland', 'Austria', '8']
 ['1996', 'J', 'Ireland', 'Belgium', '0']
 ['1996', 'J', 'Ireland', 'Bosnia & Herzegovina', '0']
 ['1996', 'J', 'Ireland', 'Croatia', '6']
 ['1996', 'J', 'Ireland', 'Cyprus', '1']
 ['1996', 'J', 'Ireland', 'Estonia', '2']
 ['1996', 'J', 'Ireland', 'Finland', '0']
 ['1996', 'J', 'Ireland', 'France', '0']

依此类推,直到文件结束(2019 年)。关于它为什么从 1996 年开始阅读以及为什么打印的第一行甚至不完整的任何想法?

提前致谢!

标签: pythoncsvprintingfilereader

解决方案


对我来说,脚本有效,使用 python3。你用的是哪个版本,

干杯,达米尔

['1975', 'J', 'Belgium', 'Finland', '0']
['1975', 'J', 'Belgium', 'France', '2']
['1975', 'J', 'Belgium', 'Germany', '0']
['1975', 'J', 'Belgium', 'Ireland', '12']
['1975', 'J', 'Belgium', 'Israel', '1']
['1975', 'J', 'Belgium', 'Italy', '6']
['1975', 'J', 'Belgium', 'Luxembourg', '0']
['1975', 'J', 'Belgium', 'Malta', '7']
['1975', 'J', 'Belgium', 'Monaco', '0']
['1975', 'J', 'Belgium', 'Norway', '0']
['1975', 'J', 'Belgium', 'Portugal', '0']
['1975', 'J', 'Belgium', 'Spain', '4']
['1975', 'J', 'Belgium', 'Sweden', '0']

推荐阅读