2012-01-18 14 views
1

これは新しい入力ファイル形式です。 .csvファイルの1つの列の内容をPythonを使用して置き換えるプロセスを自動化する必要があります。メモ帳を使用して.csvファイルを開き、列の内容を置き換えることもできますが、ファイルが非常に大きく、時間がかかります。pythonを使用してcsvファイルのデータを置き換えます。

Name       ID            class Num 
"kanika",""University ISD_po.log";" University  /projects/asd/new/high/sde"","MBA","12" 
"Ambika",""University ISD_po.log";" University  /projects/asd/new/high/sde"","MS","13" 

上記では、ID列の内容を置き換える必要があります。 ID列には大きな空白や記号(;、/)が含まれているため、ID列には一貫性がありません。ID列の新しい内容は「入力」にする必要があります。

このID列は2つの二重引用符で囲まれており、余分なスペースもあります。他の列は二重引用符が1つしかありません。

Pythonでこれを行う方法はありますか?

答えて

4

,上の.csvライン・バイ・ライン、スプリットを読み、「入力」と第二のカラムを交換してください。あなたが行くように (別のファイルに)それを書く:

f = open('mycsv.csv','rb') 
fo = open('out.csv','wb') 

# go through each line of the file 
for line in f: 
    bits = line.split(',') 
    # change second column 
    bits[1] = '"input"' 
    # join it back together and write it out 
    fo.write(','.join(bits)) 

f.close() 
fo.close() 

次に、あなたが好きなら、元のファイルを置き換えるために、名前を変更することができます。

+1

安全にcsvモジュールを使用してください。 '' ''の間にコンマがある場合は、 –

+0

の歓声を分けてはいけません。私はcsvモジュールについて知らなかったのです。毎日何か新しいことを学ぶ! –

+0

これは動作しています。私は持っていない "、" "。 – kanika

14

これを達成するには、Pythonでcsvモジュールを使用できます。

csv.readerは各行を文字列のリストとして返します。その後、csv.writerを使用して各行をストリーミングし、この時点でID列を変更すると、新しいファイルが作成されます。だから、

import csv 
reader = csv.reader(open('file.csv', 'rb')) 
writer = csv.writer(open('outfile.csv','wb')) 
for row in reader: 
    writer.writerow([row[0], "input", row[2], row[3]]) 
+0

'wb'で構文エラーが発生しました。どうしてか分かりません。 – kanika

+0

完全な構文エラーは何ですか?上記の私のために働く... – timc

+0

私はあなたのコードをコピーし、入力ファイル名を変更しました。私は 'wb'に構文エラーがあります。 – kanika

関連する問題