2016-10-29 4 views
0

私はPythonには新しく、.csvファイルを再フォーマットするスクリプトを探しています。したがって、.csvファイルには、正しく書式設定されていない行があります。これは次のようになります。再フォーマット.csvをPythonで編集:行をカンマで区切り、特定のカンマ数の後に改行を挿入します。

id,author,text,date,id,author, 
text,date 
id,author,text,date 
id,author,text,date 

各行に「id、author、text、date」があるはずです。だから私の考えは各行のコンマを数え、特定の数に達したら(この例では4)、残りの行を次の行の先頭に挿入します。私が得たのは、カンマを1行に数えた次のものです:

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

+0

標準的な長さとしてcsvファイルの最初の行を使用しますかそんなスクランブルされたCSVファイル?これらのフォーマットエラーがなければ、もう一度エクスポートする方法はありますか? – sobek

+0

ファイルのサイズはどれくらいですか?つまり、一度にファイル全体を読むことができますか? –

答えて

0

私たちは、エントリを生成するジェネレータを構築し、あなたはエントリーが欠落している行を持っている場合、これは動作しませんよう

with open('oldfile.csv', newline='') as old: 
    r = csv.reader(old) 
    num_cols = int(input("How many columns: ")) 
    entry_generator = (entry for row in r for entry in row) 
    with open('newfile.csv', 'w+', newline='') as newfile: 
     w = csv.writer(newfile) 
     while True: 
      try: 
       w.writerow([next(entry_generator) for _ in range(num_cols)]) 
      except StopIteration: 
       break 

から新しい行を構築しようとしています。

あなたがプログラムで列の幅を取得して処理したい場合は、あなたが入力として幅を取る関数でこれをラップする、またはあなたが終わるましたか

関連する問題