python - 将字符串 (csv) 的子列表转换为 float (列表理解)

标签 python string csv split

我尝试读取一个 csv 文件,我需要将其转换为 float 列表以进行评估。该列表如下所示:

[['Time [s];17063_X;17063_Y;17063_Z;17064_X;17064_Y;17064_Z;17065_X;17065_Y;17065_Z;17067_X;17067_Y;17067_Z;17068_X;17068_Y;17068_Z'], ['0;0.01952;0.04337;0.0242;0.01151;0.04152;0.03236;0.00015;-0.01679;0.05328;0.02872;0.01717;0.09341;0.01452;0.01489;0.07444'], ['0.00042;0.02188;0.04351;0.02803;0.0062;0.04108;0.03312;-0.00529;-0.01412;0.05167;0.02173;0.01377;0.04098;0.00807;0.00246;0.04354'],...]

但实际上它有超过 17000 个附加条目。我需要的列表应如下所示:

[['Time [s]', '17063_X', '17063_Y', '17063_Z', '17064_X', '17064_Y', '17064_Z', '17065_X', '17065_Y', '17065_Z', '17067_X', '17067_Y', '17067_Z', '17068_X', '17068_Y', '17068_Z'], [0, 0.01952, 0.04337, 0.0242, 0.01151, 0.04152, 0.03236, 0.00015, -0.01679, 0.05328, 0.02872, 0.01717, 0.09341, 0.01452, 0.01489, 0.07444], ...]

到目前为止,我设法将一行(列表中的最后一个元素)转换为这种格式,但不是所有列表。这是我到目前为止所得到的:

import csv

with open(filepath, 'r') as f:
  reader = csv.reader(f)
  data = list(reader)

for j in range(1, len(data)):    # this loop does nothing?!
    for i in data[j]:
    dt = i.split(';')

da = [float(i) for i in dt]
print(da)

输出:

[0.005, 0.0207, 0.02925, 0.02095, 0.02332, 0.04211, 0.02223, 0.0075, -0.01961, 0.05093, 0.02604, 0.00711, 0.06644, 0.00689, -0.00092, 0.04737]  

在列表理解方面,我将不胜感激任何帮助和一些提示。 谢谢!

最佳答案

您需要将最后两行放入 for 循环中,并检查缩进:

for j in range(1, len(data)):
    for i in data[j]:
        dt = i.split(';')
        da = [float(v) for v in dt]
        print(da)

关于python - 将字符串 (csv) 的子列表转换为 float (列表理解),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48537026/

相关文章:

python - Python中如何向上查找文件?

c - 从函数返回 char* 和 char[] 有什么区别?

python - 如何创建一个可以根据输入参数将字符串拆分任意次数的函数?

java - 如何在 Java 中更改字符串两次(基于之前的更改)? (里面的代码)

swift - 如何快速从 2 个 csv 文件中获取数据

python - 有什么比 Python 中的 Mechanize 更好?

python - 如何删除 Pandas 中的配对重复?

python : AttributeError: 'str' object has no attribute '1s'

python - 使用字段名提取数据

string - 如何从 csv 字符串中获取 map