2017-04-03 15 views
0

私はプロジェクト用のコードをいくつか書いており、このコードを.csv形式で保存しています。その後、データをさらに検査するためにExcelで開かれます。各列には8つの浮動小数点数と1つの文字列があります。どのようにして各セルの値を表示することができますか?保存のコードPythonでCSVファイルをExcelでフォーマットする

def save_array(): 
    t = utctime.t() 
    temp = data.get_data() 
    atime = np.append([temp],[t]) 
    atime = ' '.join(atime) 
    return atime 

with open(path2, 'w') as save_data: 
    save_data_write = csv.writer(save_data, delimiter = ' ' , dialect = 'excel') 
    save_data_write.writerow([save_array()]) 
save_data.close() 

while i: 
    time.sleep(1) 
    with open(path2,'a') as save_data: 
    save_data_append = csv.writer(save_data, delimiter = ' ', dialect = 'excel') 
    save_data_append.writerow([save_array()]) 
save_data.close() 

Excelの保存データは次のようになります。

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:24:59 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:00 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:01 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:02 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:03 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:04 

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 Apr 03 2017 20:25:05 

これは非常にうまくコピーされませんでしたが、これはすべて最初のセルにあり、行間をスキップします。誰かがこれを正しくフォーマットする方法を知っていますか?

おかげ

+1

Excelで「.csv」ファイルを開くことができます。まず、スペースではなく区切りにカンマを使用します。しかし、私は 'save_data_write.writerow([save_array()])'、特に 'save_array()'を理解していません。 – roganjosh

+0

また、Windowsのcsvファイルに書きたい場合は、 'w'の代わりに' wb'を使います。これは行間の不要な改行を取り除きます。 – roganjosh

+0

save_array()は、保存する配列を呼び出す関数呼び出しです –

答えて

1

クイック答え(最も簡単な方法):

import numpy 
#open the file in append, binary mode 
savefile=open('filename.csv','ab') 

#write to it the first time 
save_data = save_array() 
numpy.savetxt(savefile, save_data, fmt='%s', delimiter=',', newline='\n') 

#do your loop here 
time.sleep(1) 
save_data = save_array() 
numpy.savetxt(savefile, save_data, fmt='%s', delimiter=',', newline='\n') 

#once done 
savefile.close() 

これは(理由は%sオプションの)文字列としてすべてを保存しますが、それはあなたのアプリケーションのために働く必要があります。最初に 'ab'モード(append、binary)でファイルを開いたので、ファイルを上書きせずに最後まで追加し続けます。コードを実行するたびに新鮮な状態にしたい場合は、代わりに 'wb'でファイルを開きます。

よりかさばる方法(ただし、いくつかの特定の用途のためにおそらくより伝統的な、より良い):

#open the file in append, binary mode 
savefile=open('filename.csv','ab') 
csvwriter = csv.writer(myFile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) 

save_data = save_array() 
for i in range(len(save_data)): 
    csvwriter.writerow(save_data[i]) 

#do your loop here 
time.sleep(1) 
save_data = save_array() 
for i in range(len(save_data)): 
    csvwriter.writerow(save_data[i]) 

#once done 
savefile.close() 

希望に役立ちます、そしてそれはあなたの問題を解決した場合は、正しい答えとしてこれをマークするようにしてください。興味のある読者のため

詳細:あなたは彼らが読み込まれる方法を理解するとき

CSVファイルは非常に単純です。

まず、列に含まれていない区切り文字(列を区切る文字)を使用するのが理想的です。文字列にスペースがあるので、スペース区切り文字を使用しないでください。コンマは一般的な選択ですが、セミコロンとタブ(\ tを区切り文字として使用することもできます)は他の一般的な選択肢です。一般に、.csvファイルではコンマが使用されますが、.txtファイルでタブが使用されます。

第2に、Excelに形式が何であるかを伝える必要があります。 Excelでは、.csvファイルをコンマで区切ることを想定しています(名前は文字通り「カンマ区切りの値」を意味するため)。 .txtファイルの場合は、データの読み込み方法を選択できるウィザードが開きます。

+0

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

0
file_path = 'name.csv' 
with open(file_path, 'w', newline='') as result_file: 
    csv_writer = csv.writer(result_file, delimiter=',', quotechar='"', 
           quoting=csv.QUOTE_MINIMAL) 
    csv_writer.writerow([1, 2.2, '33']) 
関連する問題