繁体   English   中英

Python line_num 打印行号仅输出最后一行号

[英]Python line_num printing the line number outputs only the last line number

我正在尝试打印 a.csv 文件的行号,但它只输出所有行的最后一个行号,这是我的代码:

import csv
openfile = open('example_csv.csv')
readcsv = csv.reader(openfile, delimiter = ',')
list_csv_content = list(readcsv)

for row in list_csv_content:
    print(f'Row #{readcsv.line_num} {row}')

output是这样的:

Row #7 ['4/5/2015 13:34', 'Apples', '73']
Row #7 ['4/5/2015 3:41', 'Cherries', '85']
Row #7 ['4/6/2015 12:46', 'Pears', '14']
Row #7 ['4/8/2015 8:59', 'Oranges', '52']
Row #7 ['4/10/2015 2:07', 'Apples', '152']
Row #7 ['4/10/2015 18:10', 'Bananas', '23']
Row #7 ['4/10/2015 2:40', 'Strawberries', '98']

我究竟做错了什么?

line_num属性只是读者阅读的总行数。

但是,以下代码应该可以在您enumerate并获取实际行以及该行的从零开始的索引的地方工作。

import csv
openfile = open('chart-images.csv')
readcsv = csv.reader(openfile, delimiter = ',')
list_csv_content = list(readcsv)

for line_num, row in enumerate(list_csv_content): 
    print(f'Row #{line_num} {row}')
  • 切换到枚举,如@vks 所示

当您将readcsv保存到列表中时,您正在阅读整个 csv,这就是 line_num 指向最后一行的原因。

您可以通过不将 csv 保存到列表中来解决它:

openfile = open('test.csv')
readcsv = csv.reader(openfile, delimiter = ',')

for line in readcsv:
    print(line, readcsv.line_num)

或通过枚举列表:

import csv
openfile = open('example_csv.csv')
readcsv = csv.reader(openfile, delimiter = ',')
list_csv_content = list(readcsv)

for i, row in enumerate(list_csv_content):
    print(f'Row #{i} {row}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM