2016-10-21 12 views
0

をコンマに空間から変換した値を並べ替えそれはうまく動作します。私は多くの行を持つ.csvファイルを持っているし、構造とPythonの

私は事前に

おかげ等newfile.datの変化、各値の位置、例えば、位置6においてHH値を入れ、位置2におけるsecond_name値を、必要

import csv 
with open('file.csv') as infile, open('newfile.dat', 'w') as outfile: 
    for line in infile: 
     outfile.write(" ".join(line.split()).replace(' ', ',')) 

あなたの助け。

+0

コードの前後に改行で4行分の各行をインデントしてコードを投稿してください。 – jftuga

+0

あなたの質問は何ですか? SOはフリーコードジェネレータではありません。私たちはあなたのためにあなたの仕事をしません。 –

+0

組み込みの 'csv'パッケージを使用する方が、ファイルを手作業で解析して書くのではなく、もっと簡単に使えるかもしれません。 –

答えて

1

あなたが輸入している場合はcsvだけでなく、CSVファイルを開くときに、それ

import csv 
with open('file.csv', newline='') as infile, open('newfile.dat', 'w+', newline='') as outfile: 
    read = csv.reader(infile, delimiter=' ') 
    write = csv.writer(outfile) #defaults to excel format, ie commas 
    for line in read: 
     write.writerow(line) 

使用newline=''、そうでなければ、ダブルスペースファイルを取得使用する場合があります。

これは入力行をそのまま入力します。書き込む前に変更したい場合は、for line in read:ループで行います。 lineは、任意の数の方法で順序を変更できる文字列のリストです。値の順序を変更するには

一つの方法は、operator.itemgetterを使用することです:

from operator import itemgetter 
getter = itemgetter(5,4,3,2,1,0) #This will reverse a six_element list 
for line in read: 
    write.writerow(getter(line)) 
+0

OPはファイルに書き込む前に値を変更したい - newfile.datに各値の位置を変更する必要があります。例えばHHの値を6の位置に、second_nameの値を2の位置に置くなど、 –

+0

@DineshPundkarは知らずに彼はそれを助けるのは難しい探している正確な変換。 –

+0

コメントありがとうございました。 –

1

項目の順序を変更するには、次のように、基本的な方法は次のようになります。

split_line = line.split(" ") 
column_mapping = [9,6,3,7,3,2,1] 
reordered = [split_line[c] for c in column_mapping] 
joined = ",".join(reordered) 
outfile.write(joined) 

これは、文字列を分割、それを並べ替えcolumn_mappingに従って1つの文字列に変換します(カンマ区切り)

(コードにはcolumn_mappingが含まれていませんそれを再初期化しないようにしてください)

関連する問題