2016-07-20 23 views
1

csvファイルからコンマを含むリストを列として読み込む方法は?私は、データを以下の含まれたCSVファイル読み込みたい

10,[40000,1][50000,5][60000,14] 
20,[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
30,[60000,4] 
40,[40000,5][50000,14] 

Input.csv-

を私は、このcsvファイルを解析し、それが行ずつ解析したいです。しかし、これらのリストにはカンマ( '、')が含まれているため、正しい結果が得られません。

プログラム・コード -

if __name__ == "__main__": 

    with open(inputfile, "r") as f: 
     reader = csv.reader(f,skipinitialspace=True) 
     next(reader,None) 
     for read in reader: 
      no = read[0] 
      splitted_record = read[1]   
      print splitted_record 

[40000 
[40000 
[60000 
[40000 

出力 -私が理解することができread.csv方法は、各列のカンマまで読み込みます。しかし、どのようにしてリスト全体を1つの列として読むことができますか?

他の[ファイル] - 私は引用符( "")せずにこのsplitted_recordを書くことができますどのように

name_list = ['no','splitted_record'] 
file_name = 'temp/'+ no +'.csv' 
if not os.path.exists(file_name): 
    f = open(file_name, 'a') 
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list) 
    writer.writeheader() 
else: 
    f = open(file_name, 'a') 
    writer = csv.DictWriter(f,delimiter=',',fieldnames=name_list) 
writer.writerow({'no':no,'splitted_record':splitted_record}) 

にものを書く

[40000,1][50000,5][60000,14] 
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
[60000,4] 
[40000,5][50000,14] 

出力 - 期待しますか?

ありがとうございました!

+0

なぜ 'open'と*これもなし、splitted_recordので、私は** ** csv.readerで読んでいるヘッダを持っているcsvファイルである' csv' –

+0

@Moses Koledoye-なし*お読みください。 – kit

+0

行ごとに読み込み、正規表現 – pwnsauce

答えて

1

あなたが一緒にそれらの項目に参加することができ、あなたはそれがコンマ

で を分割知っているので、
if __name__ == "__main__": 

    with open(inputfile, "r") as f: 
     reader = csv.reader(f,skipinitialspace=True) 
     next(reader,None) 
     for read in reader: 
      no = read[0] 
      splitted_record = ','.join(read[1:])   
      print splitted_record 

出力

[40000,1][50000,5][60000,14] 
[40000,5][50000,2][60000,1][70000,1][80000,1][90000,1] 
[60000,4] 
[40000,5][50000,14] 

---更新--- データは、上記の出力

with open(filepath,'wb') as f: 
    w = csv.writer(f) 
    for line in data: 
     w.writerow([line]) 
です
+0

@ galaxyan-で分割しますが、このレコードを別のファイルに書き込んでいる間にdouble cotes( "")が発生します。それを書いている間に削除することはできますか? – kit

+0

@kit join後、データは文字列になるので、ファイルに書き込むときにデータは ""になります。文字列をリストのリストに変更したいのですか? – galaxyan

+0

@ galaxyan-文字列をリストのリストに変更したくない場合、出力ファイルを[40000,1] [50000,5] [60000,14]の代わりに**の代わりにそのまま残したい"[40000,1] [50000,5] [60000,14]" ** with quote( ") – kit

関連する問題