我正在尝试打印csv文件的每一行,并记录正在打印的行数。
with open('Polly re-records.csv', 'r',encoding='ISO-8859-1') as file: #file1 path
ct=0
while True:
ct+=1
if file.readline():
print(file.readline(),ct)
else:
break #break when reaching empty line
对于上面的代码,我得到了以下输出:
lg1_1,"Now lets play a game. In this game, you need to find the odd one out.",,,,,,,,,,,,,,,,,,,,,,,,
479
sc_2_1,Youve also learned the strong wordsigns and know how to use them as wordsigns. ,,,,,,,,,,,,,,,,,,,,,,,,
480
因此,在我的输出中,第一个值直接是479,而不是从1开始的ct,除非if语句执行478次,否则这是不可能的
我应该做什么更改或者什么逻辑缺陷阻止了print语句的执行
3条答案
按热度按时间eagi6jfj1#
另外,您还可以使用其他方法作为enumerate
xdyibdwo2#
利用一些python方法(如
enumerate()
)可能会更容易至于您可能更改哪些内容并保留代码,您遇到的问题是调用
readline()
太频繁,并且丢弃了一半的结果。mcdcgff03#
Python为你的用例提供了有用的内置函数,例如enumerate,它为可迭代对象中的每一项产生一个连续的计数。
正如drdalle所指出的,使用内置的csv module也可能是一个更好的主意,因为它也可以处理csv编码(例如,如果您有多行单元格包含
\n
Package 或其他转义值)。