为了账号安全,请及时绑定邮箱和手机立即绑定

Python line_num 打印行号只输出最后的行号

Python line_num 打印行号只输出最后的行号

阿晨1998 2022-12-20 15:29:13
我正在尝试打印 .csv 文件的行号,但它只输出所有行的最后一个行号,这是我的代码:import csvopenfile = 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}')输出是这样的: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']我究竟做错了什么?
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

当您将其保存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}')


查看完整回答
反对 回复 2022-12-20
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

该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所示


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信