我必须输入一个文本文件,其中包含分隔的逗号和行分隔的数据,格式如下:
A002,R051,02-00-00,05-21-11,00:00:00,REGULAR,003169391,001097585,05-21-11,04:00:00,REGULAR,003169415,001097588,05-21-11,08:00:00,REGULAR,003169431,001097607文本文件中存在多组此类数据。
我需要打印所有这一切在新的行与条件:1,3元素的每组,然后在一条新的行中的5个参数。因此,上述一套方案的解决办法如下:
A002,R051,02-00-00,05-21-11,00:00:00,REGULAR,003169391,001097585
A002,R051,02-00-00,05-21-11,04:00:00,REGULAR,003169415,001097588
A002,R051,02-00-00,05-21-11,08:00:00,REGULAR,003169431,001097607我实现这一目标的职能如下:
def fix_turnstile_data(filenames):
for name in filenames:
f_in = open(name, 'r')
reader_in = csv.reader(f_in, delimiter = ',')
f_out = open('updated_' + name, 'w')
writer_out = csv.writer(f_out, delimiter = ',')
array=[]
for line in reader_in:
i = 0
j = -1
while i < len(line):
if i % 8 == 0:
i+=2
j+=1
del array[:]
array.append(line[0])
array.append(line[1])
array.append(line[2])
elif (i+1) % 8 == 0:
array.append(line[i-3*j])
writer_out.writerow(array)
else:
array.append(line[i-3*j])
i+=1
f_in.close()
f_out.close()输出是错误的,在这些行的末尾有一个3行的空间,其长度为8。我怀疑应该归咎于writer_out.writerow(数组)。
有人能帮帮我吗?
发布于 2015-09-12 12:14:54
嗯,你所用的逻辑最终会变得相当混乱。我会更多地按照这些路线(这取代了for循环)来做,这更像是Pythonic:
for line in reader_in:
header = line[:3]
for i in xrange(3, len(line), 5):
writer_out.writerow(header + line[i:i+5])https://stackoverflow.com/questions/32538612
复制相似问题