在使用Python生成的CSV-fi时,Excel忽略十进制分隔符

2024-06-16 11:51:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python编写csv文件。格式如下:

1; 2.51; 12
123; 2.414; 142

编辑:我已经在CSV中得到了上面的格式,所以python代码看起来还可以。这似乎是一个excel问题,可以通过改变@chucksmash提到的设置来解决。你知道吗

但是,当我尝试用excel打开生成的csv文件时,它无法识别十进制分隔符。2.414在excel中被视为2414。你知道吗

csvfile = open('C:/Users/SUUSER/JRITraffic/Data/data.csv', 'wb')
writer = csv.writer(csvfile, delimiter=";")
writer.writerow(some_array_with_floats)

Tags: 文件csvcsvfile代码编辑格式openexcel
3条回答

一个丑陋的解决方案,如果您真的想使用;作为分隔符:

import csv
import os

with open('a.csv', 'wb') as csvfile:
    csvfile.write('sep=;'+ os.linesep) # new line
    writer = csv.writer(csvfile, delimiter=";")
    writer.writerow([1, 2.51, 12])
    writer.writerow([123, 2.414, 142])

这将产生:

sep=;
1;2.51;12
123;2.414;142

Excel可以很好的识别。你知道吗

我个人会使用,作为分隔符在这种情况下,您不需要第一行,因此基本上可以:

import csv

with open('a.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile) # default delimiter is `,`
    writer.writerow([1, 2.51, 12])
    writer.writerow([123, 2.414, 142])

excel会识别出发生了什么。你知道吗

是否检查了csv文件是否正确生成?另外,尝试指定导入/打开文件时用于csv文件的delimeter字符。在本例中,它是一个分号。你知道吗

对于python3,我认为上面的代码也会遇到TypeError,这可能是问题的一部分。你知道吗

我刚刚对open方法做了一个修改,将其改为“w”,而不是“wb”,因为数组有浮点数据,而不是二进制数据。这似乎产生了你想要的结果。你知道吗

csvfile = open('C:/Users/SUUSER/JRITraffic/Data/data.csv', 'w')

相关问题 更多 >