簡體   English   中英

Python在Excel中格式化CSV文件

[英]Python formatting a csv file in excel

我正在為項目編寫一些代碼,並將此代碼保存為.csv格式。 然后它將在excel中打開以進一步檢查數據。 每行有8個浮點數和1個字符串。 如何獲得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

復制效果不是很好,但是在excel中,這全部在第一個單元格中,並且它還會跳過行之間的一行。 有人知道如何正確格式化嗎?

謝謝

快速解答(最簡單的方法):

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”模式(附加,二進制)打開了文件,所以它不會覆蓋文件,而是繼續添加到底部。 如果您想在每次運行代碼時重新開始,請改用“ 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作為分隔符來獲取它們)是其他常見的選擇。 通常,人們使用帶有.txt文件的制表符,而在.csv文件中使用逗號。

其次,您需要告訴Excel格式是什么。 Excel期望.csv文件用逗號分隔(可以理解,因為名稱字面意思是“逗號分隔的值”)。 對於.txt文件,它應該打開一個向導,讓您選擇如何讀取數據。

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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM