[英]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文件的第三列?
在i
的params[::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.