csv文件在以浮点形式写入时提供字符串

2024-10-02 00:41:39 发布

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

我的csv文件如下所示:

"(-0.16192019, -0.007456851, 0.08841695)","(-0.10439591, 0.024501082, 0.12783173)","(-0.05965481, 0.049002163, 0.12144014)",...

但我不想引用。你知道吗

我把函数写成:

for j in range(len(sensor_data)):
    with open(names[j] + "P" + str(i) + ".csv", "wb") as f:
        writer = csv.writer(f)
        writer.writerows(sensor_data[j])

我的sensor_data[j]是这样的:

gyro.append((float(merge.iloc[j, 2]), float(merge.iloc[j, 3]), float(merge.iloc[j, 4]))) if merge.iloc[j, 0] == 'Gyroscope' \
             else acc.append((float(merge.iloc[j, 2]), float(merge.iloc[j, 3]), float(merge.iloc[j, 4])))

为什么不打印浮点元组而不是字符串元组?你知道吗

merge = pd.read_csv(final_user_study_path + "/P" + str(i) + "/DataCollection/data/merge.csv")

合并看起来像:

Gyroscope,50958,-0.3387541,0.014913702,0.05965481
Gyroscope,50978,-0.23009712,0.03621899,0.044741105
LinearAcceleration,50979,-0.09891046,0.119261175,-0.108936176
Gyroscope,50998,-0.1768339,0.066046394,0.040480047
LinearAcceleration,50999,-0.0863409,0.18240824,-0.07152677

所有这些值的类型都是字符串。你知道吗

我想要:

(-0.16192019, -0.007456851, 0.08841695),(-0.10439591, 0.024501082, 0.12783173),(-0.05965481, 0.049002163, 0.12144014),...

Tags: 文件csv函数字符串datamergesensorfloat
1条回答
网友
1楼 · 发布于 2024-10-02 00:41:39

要在需要时阻止csv.writer()添加引号(因为它在单元格中发现了分隔符),请按如下方式添加quoting参数:

writer = csv.writer(f, quoting=csv.QUOTE_NONE)

查看CSV文档:^{}

不过,最好将元组解包,这样它们就可以在没有任何额外括号的情况下正确地得到自己的单元。可以使用^{}将所有元组折叠到一个列表中。例如:

from itertools import chain

row = [(-0.16192019, -0.007456851, 0.08841695), (-0.10439591, 0.024501082, 0.12783173), (-0.05965481, 0.049002163, 0.12144014)]

print row
print list(chain.from_iterable(row))

这将显示:

[(-0.16192019, -0.007456851, 0.08841695), (-0.10439591, 0.024501082, 0.12783173), (-0.05965481, 0.049002163, 0.12144014)]
[-0.16192019, -0.007456851, 0.08841695, -0.10439591, 0.024501082, 0.12783173, -0.05965481, 0.049002163, 0.12144014]

如您所见,第二行显示所有元组都已被展平到单个列表中。你知道吗

相关问题 更多 >

    热门问题