Python在Excel中格式化csv文件

我正在为一个项目编写一些代码并将此代码保存为.csv格式。 然后在excel中打开进一步检查数据。 有8个花车,然后每行1个string。 如何获得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() 

这会将所有内容保存为string(因为有%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文件是非常简单的。

首先,你应该理想的使用分隔符(用于分隔列的字符),这些分隔符不包含在任何列中。 由于你的string中有空格,所以你不应该使用空格分隔符。 逗号是常见的select,但分号和制表符(可以使用\ t作为分隔符)是其他常用选项。 通常,一个使用带.txt文件的选项卡,而.csv文件使用逗号。

其次,你需要告诉Excel格式是什么。 Excel预计.csv文件由逗号分隔(可以理解,因为名字的字面意思是“逗号分隔值”)。 对于.txt文件,它应该打开一个向导,让您select如何读取数据。

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