从CSV输入Python中查找最后一行



我并没有真正找到与我的问题相关的例子,因为我不认识熊猫,所以我把它发布在这里。如果这一点不清楚或已经得到回应,请告诉我。

我有一个CSV输入,我像这个一样导入

def import_csv(csvfilename):
data = []
with open(csvfilename, "r", encoding="utf-8", errors="ignore") as scraped:
reader = csv.reader(scraped, delimiter=',')
row_index = 0
for row in reader:
if row:  # avoid blank lines
row_index += 1
columns = [str(row_index), row[0], row[1], row[2]]
data.append(columns)
return data

我用input_rows索引行(可能有更好的方法吗?(

输入示例:

[['1',
'[FirstValue]',
'FirstText',
'AB'],
[...]
['12',
"['LastValue']",
"LastText",
'YZ']]

我想得到这个输入列表的最后一行。有没有一种简单的方法可以在不遍历所有行的情况下做到这一点?

谢谢!

您实际上可以通过statment获得中的最后一行由于python支持负索引,您可以只使用

with open(csvfilename, "r", encoding="utf-8", errors="ignore") as scraped:
final_line = scraped.readlines()[-1]

您可以获得数组中的最后一个元素,如下所示:

some_list[-1]

事实上,使用这种语法可以做更多的事情。some_list[-n]语法获取倒数第n个元素。所以some_list[-1]得到最后一个元素,some_list[-2]得到倒数第二个元素,等等

因此,在您的情况下,它将是:

import csv    
def import_csv(csvfilename):
data = []
with open(csvfilename, "r", encoding="utf-8", errors="ignore") as scraped:
reader = csv.reader(scraped, delimiter=',')
for row in reader:
if row:  # avoid blank lines
row_index += 1
columns = [str(row_index), row[0], row[1], row[2]]
data.append(columns)
return data
data = import_csv(file_name)
last_row = data[-1]

Python支持负索引。

your_list[-1] # Fetch the last value in your list.

如果不了解您的用例以及更多关于数据以及通常如何访问数据的信息,很难说什么数据结构对您更有利。

值得注意的是,csv.reader是一个迭代程序,在迭代完成之前不包含数据。同样是迭代器的scraped打开的I/O流对象也是如此。不幸的是,"我可以在不迭代文件/数据的情况下获得最后一行吗"的问题是否定的,除非有一个特定的流点可以跳转到(使用scraped.seek()(,否则在迭代完所有数据之前,您将无法获得最后一行将。

然而,一旦消耗了所有数据,就可以通过负索引的方式在代码中使用data[-1]进行检索,即返回list的最后一行。

这里有一个您可能感兴趣的相关问题,但同样,在允许reverse()操作之前,所有答案都会消耗数据(将整个数据作为列表读取(,因此,所有数据必须至少读取一次。

最新更新