繁体   English   中英

如何在python中解析csv文件

[英]how to parse csv file in 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(nproc, 0, -1):
            load.append(params[::i])
            del params[::i]

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

iparams[::i]被称为步幅切片。 由于::部分表示整个序列,因此具有选择序列中 i 元素的效果。

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

params = 'abcdefghijklmnopqrstuvwxyz'

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

输出:

for i: 3, params[::i] --> adgjmpsvy
for i: 2, params[::i] --> acegikmoqsuwy
for i: 1, params[::i] --> abcdefghijklmnopqrstuvwxyz

最好用另一个代码片段来说明del params[::i]的效果。 简而言之,它删除了序列中的所有 i 元素。 在下面的代码中,该序列再次转换为字符串,以提高输出的可读性。

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)))

输出:

for i: 3, del params[::i] --> bcefhiklnoqrtuwxz
for i: 2, del params[::i] --> bdfhjlnprtvxz
for i: 1, del params[::i] -->

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM