CSV文件后的最后一个值

时间:2018-10-19 13:29:25

标签: python csv

我将如何在csv文件中的逗号后打印出最后一个值,我想遍历文件并打印出最后一个值:

数据:

containerCss

代码:

object

这只会给我最后一个字符8和1

3 个答案:

答案 0 :(得分:2)

使用此:

import csv
with open('output.csv', 'r') as f:
  for row in (list(csv.reader(f))):
    print(', '.join(row.split(',')[-1])

基本上,您只是在访问该行的最后一个字符。但是您需要使用进行拆分,然后选择最后一个值

答案 1 :(得分:1)

这是因为您要先加入列表,然后再检索该字符串的最后一项,恰好是最后一个字符。尝试像这样解析它:

import csv
with open('output.csv', 'r') as f:
    for row in csv.reader(f):
        value = float(row[-1])
        print(value)

答案 2 :(得分:-1)

在回答问题之前,每个答案。但是,当您的csv文件变大时,这种方法将不是最有效的一种。我建议使用pandas来做到这一点,

import pandas as pd
file = pd.read_csv('output.csv', header=None)
print(file.iloc[:, -1])

输出将是:

0    62.757528
1    42.267051

编辑

为回答评论,我使用以下代码进行了基准测试:

import pandas as pd
import csv
import timeit


def without_pandas():
    with open('output.csv', 'r') as f:
        for row in csv.reader(f):
            value = float(row[-1])


def with_pandas():
    file = pd.read_csv('output.csv', header=None)
    for row in file.iloc[:, -1]:
        value = float(row)

if __name__ == '__main__':
    num = 10000
    print("Without pandas:", timeit.timeit(
        'without_pandas()', number=num,
        setup="from __main__ import without_pandas")/num)
    print("With pandas:", timeit.timeit(
        'with_pandas()', number=num,
        setup="from __main__ import with_pandas")/num)

输出为:

Without pandas: 0.012996618213300826
With pandas: 0.012586948527599453

文件大小为751K(6864行),而对于较小的文件,其效率实际上是完全相同的。