2017-03-06 21 views
1

test3.csvには1つの列に33個の数字が含まれています。 1つの列を11行3列に再形成したいと思います。そして、私は添付ファイルのような行と列を持つ新しいasciiファイルとして保存したい。複数列のCSVファイルをASCIIファイルに変換する

まず試してみてください。

import csv 
f = open('test3.csv') 
csv_f = csv.reader(f) 
for row in csv_f: 
    print row /* The result is 

結果は次のとおりです。

['0.000016'] ['0.000045'] ['0.000062'] ['0.000063'] ['0.000063'] ['0.000063']... **[' ']** means string? 

2回目の試行:

f = open('test3.csv') 
csv_f = csv.reader(f) 
for row in csv_f: 
    print row[0] 

0.000016 0.000045 0.000062 0.000063 0.000063 0.000063 ...I think they are number. 

3回目:結果は

import csv 
import numpy as np 
f = open('test3.csv') 
csv_f = csv.reader(f) 
a1 = [] 
for row in csv_f: 
    a1.append(row[0]) 
print a1 

結果は次のとおりです。

['0.000016', '0.000045', '0.000062', '0.000063', '0.000063', '0.000063',...]. 

実は私のようなASCIIファイルとして、この結果にしたいです

Image

答えて

0

ここでは何が必要でしょういくつかのコードです:

コード:

import csv 

# read each line of the input csv 
with open('file3') as f: 
    csv_f = csv.reader(f) 

    # convert the first element of each line to a formated float 
    numbers = ['%.6f' % float(row[0]) for row in csv_f] 

# make sure the length is divisible by 3 
numbers += [''] * (-len(numbers) % 3) 

# reorder to by 3 
numbers = [(numbers[i], numbers[i+1], numbers[i+2]) 
      for i in range(0, len(numbers), 3)] 

# print each line 
for line in numbers: 
    print(' '.join(line)) 

テストデータ:

0.000016 
0.000045 
0.000062 
0.000063 
0.000063 
0.000063 
0.000079 
0.000078 
0.000045 
0.000062 
0.000062 
0.000062 
0.000062 
0.000062 
0.000062 
0.000077 
0.000073 
0.000062 
0.000062 
0.000045 
0.000063 

結果:

0.000016 0.000045 0.000062 
0.000063 0.000063 0.000063 
0.000079 0.000078 0.000045 
0.000062 0.000062 0.000062 
0.000062 0.000062 0.000062 
0.000077 0.000073 0.000062 
0.000062 0.000045 0.000063 
0

私はthis great answerを活用:

from itertools import izip_longest 

def grouper(iterable, n, fillvalue=None): 
    args = [iter(iterable)] * n 
    return izip_longest(*args, fillvalue=fillvalue) 

with open('data.txt', 'r') as f: 
    for group in grouper(f, 3, ''): 
     print ' '.join([x.strip() for x in group]) 
関連する問題