如何在python中解析csv文件

如何在python中解析csv文件,python,Python,我是python新手。我要从csv文件中读取以下代码,但在某些方面我感到困惑 with open(sys.argv[1], "rU") as csvfile: f = csv.reader(csvfile, delimiter=',') # f.next() #if an input file a headed for row in f: params.append(row) for i in xrange

我是python新手。我要从csv文件中读取以下代码,但在某些方面我感到困惑

with open(sys.argv[1], "rU") as csvfile:
            f = csv.reader(csvfile, delimiter=',')
            # f.next() #if an input file a headed
            for row in f: params.append(row)

        for i in xrange(nproc, 0, -1):
            load.append(params[::i])
            del params[::i]

据我所知,params是一个列表,其中每个元素都是输入csv文件的一行。那么,params[::i]是什么意思呢?这是否意味着输入csv文件的第三列?

params[::i]
中的
i
称为切片的第三列。由于
::
部分表示整个序列,因此它具有选择序列的每个
i
th元素的效果

要查看其效果,请假定
params
是csv文件中的一行数据,每列中都有字母表的顺序字母。在下面的代码中,我将其设置为字符串,这是一个字符序列,只是为了使输出更具可读性

params = 'abcdefghijklmnopqrstuvwxyz'

for i in xrange(3, 0, -1):
    print('for i: {}, params[::i] --> {}'.format(i, params[::i]))
输出:

对于i:3,参数[::i]-->adgjmpsvy 对于i:2,params[::i]-->acegikmoqsuwy 对于i:1,参数[::i]-->abcdefghijklmnopqrstuvwxyz
delparams[::i]
的效果最好用另一个代码片段来说明。简而言之,它删除序列中的每个
i
th元素。在下面的代码中,为了输出的可读性,序列再次转换为字符串

params = list('abcdefghijklmnopqrstuvwxyz')

for i in xrange(3, 0, -1):
    temp = params[:]  # make copy to avoid changing it every iteration
    del temp[::i]
    print('for i: {}, del params[::i] --> {}'.format(i, ''.join(temp)))
输出:

对于i:3,del参数[::i]-->bcefhiklnoqrtuwxz
对于i:2,del params[::i]-->bdfhjlnprtvxz
对于i:1,del params[::i]-->

表示“每第i行”,因此如果
i
为3,则每第三行(非列);正如您正确理解的,param是一个列表,其中每个元素都是csv文件的一行。非常感谢。还有一个问题:这里nproc是处理器的数量,load是一个空列表。那么,load.append(params[::i])的含义是什么呢?
load.append(params[:i])
params[:i]
切片定义的序列中的元素追加到
load
列表的末尾,然后在下一条语句中将它们从
params
本身中删除。