2016-07-28 13 views
0

私は214の列(データをスペースで区切って)と約50万行のtxtファイルを持っています。txtファイルをcsvに変換する方法

私はCSVファイルにTXTを変換すると、このコードを使用しています

import csv 

txt_file = r"myfile.txt" 
csv_file = r"myfile.csv" 

in_txt = csv.reader(open(txt_file, "r"), delimiter = " ", quotechar=" ") 
out_csv = csv.writer(open(csv_file, 'w', newline='\n'),delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL) 

out_csv.writerows(in_txt) 

しかし、これはすべての列がちょうど第1回A列に、スペースで区切られたcsvファイルに自分のデータをエクスポートしますexcel ...私は最終的にはtxtをcsvに変換できるようにしたいと考えており、このプロセスでは10th-48th, 50-61, 65, 67, 68, 71-75, 77, 78, 80-88, 91, 93, 96-100, 102, 105-110, 112-114, 116-119, 122-126, 128-134, 136-140, 142-151, 153-155, 160-162, 165-169, 172-173, 175-177, 179-187, 189-196, 198, 199 & 201-214の列を削除します。私はこれがシンプルだと確信していますが、それを行う方法を試してみようと私の髪を引っ張っています

+0

は、なぜあなたは、 '」「' 'csv.writer'のように区切り文字を持っていますか? – mgilson

+0

私はデリミタが自分のデータを分けていることを尋ねていると思っていたので...それはスペースなのでスペースを入れました:-D –

+0

ああ...いいえ、csv.writerの場合、デリミタは出力に使用されます。 'writerow'や' writerows'に渡すものに基づいてフィールドを取得します(バニラライターは単純に 'writerows'のリストまたはリストです) – mgilson

答えて

0

でそれらすべてをロードせずに各行を変更することができます。 '生成されたcsvファイルの区切り文字として使用します。 列を削除するために、forループでそれらを反復処理し、現在の列のみを書き込む以外の方法はありません。

例:。:

first_row = next(in_read);  
for x in range(0, length(first_row)): 
    if x not 10: 
     write() 
+0

私はあなたがforループで 'enumerate'のようなものを探していると思います。 – MisterMiyagi

1

区切り文字をwriterに設定する必要があります。

import csv 

txt_file = r"myfile.txt" 
csv_file = r"myfile.csv" 

in_txt = csv.reader(open(txt_file, "r"), delimiter = " ", quotechar=" ") 
out_csv = csv.writer(open(csv_file, 'w', newline='\n'),delimiter=',', quotechar=' ', quoting=csv.QUOTE_MINIMAL) 
                # changed this^

out_csv.writerows(in_txt) 

カラムを削除するには、行ごとに削除するだけです。ジェネレータ式は、あなたが「あなたは作家が使用したいので、

out_csv = csv.writer(open(csv_file, 'w', newline='\n'),delimiter=';', quotechar=' ', quoting=csv.QUOTE_MINIMAL) 

out_csv = csv.writer(open(csv_file, 'w', newline='\n'),delimiter=' ', quotechar=' ', quoting=csv.QUOTE_MINIMAL) 

を変更する必要がありますが、一度

cleaned_column_iter = (line[0:10] + line [49:50] + line [62:65] for line in txt) 
           # add more elements as desired^
out_csv.writerows(cleaned_column_iter) 
+0

ありがとうMrMiyagi私はそれがうまくいったと思います!私はそれが大きすぎるので開くことができないように見えるので、少なくとも今はいくつかの列を削除することができるはずです - 歓声:) –

+0

@JacintaTonkin列を削除する方法の追加ノートを参照してください。 – MisterMiyagi

関連する問題