在Python中拆分CSV文件,并用分号分隔记录

在Python中拆分CSV文件,并用分号分隔记录,python,csv,raspberry-pi,Python,Csv,Raspberry Pi,我有一个CSV文件,包含以下格式的288条记录(仅前3条记录的摘录) 20210402,23:5537684,4.758,0,0,0.00016238510,南,242.0,-500.000,0.000500.000,-500.000,10.000,南;20210402,23:5037684,4.758,0,0,0.00016195540,南,243.0,-530.000,0.000530.000,-530.000,10.000,南;20210402,23:4537684,4.758,0,0,0

我有一个CSV文件,包含以下格式的288条记录(仅前3条记录的摘录)

20210402,23:5537684,4.758,0,0,0.00016238510,南,242.0,-500.000,0.000500.000,-500.000,10.000,南;20210402,23:5037684,4.758,0,0,0.00016195540,南,243.0,-530.000,0.000530.000,-530.000,10.000,南;20210402,23:4537684,4.758,0,0,0.00016150540,南,243.0,-550.000,0.000550.000,-550.000,南

如果我在记事本中打开此文件,它将保存为连续字符串。如果我在excel中打开它,那么每个值都在一列中。第一条记录的最后一列与第二条记录的第一列共享,依此类推,如下所示

我正在尝试吐出字符串,因此有288条记录使用

with open('dailyData.csv','r') as file:
    array = file.readlines()
    array = [row.split(';') for row in array]
“;”已转换为“”,但它不会拆分字符串

[20210402,23:5537684,4.758,0,0,0.00016238510,NaN,242.0,-500.000,0.000500.000,-500.000,10.000,NaN',20210402,23:5037684

有什么想法吗

更新

我试着用熊猫

array = pandas.read_csv('dailyData.csv', delimiter=';', header=None)
print(array.columns)
这是回报

INT64索引([0,1,2,3,4,5,6,7,8,9, ... 277, 278, 279, 280, 281, 282, 283, 284, 285, 286], dtype='int64',length=287)

这意味着我可以处理任何记录,但不能处理记录中的元素

只是希望能够寻址为数组[r][c],其中r是0到287,c是0到16

谢谢

嗨,卡米尔,我试过了

 with open('dailyData.csv') as file:
    for x in file:
        columns = x.split(';')
        for y in columns:
            lines = y.split(',')
            print(lines)
这会打印行,但不会创建我可以寻址的数组。

将open('dailyData.csv','r')作为文件:
array=file.readlines()
array=[x.split(',')表示行中的x.split(';')表示数组中的行]
这个怎么样:

with open("data.csv") as f:
    array = [l.split(",") for l in f.readline().split(";") if l]

print(len(array))
print(array[1][0])
输出:其中
3
是数组中的列表数,每个列表有
16个值

3
20210402
以上考虑到:

只是希望能够寻址为数组[r][c],其中r是0到287 c是0到16

我假设您的数据是一个长的连续字符串,如您的问题所示

如果您愿意,可以轻松地将其转储到
pandas数据帧
,然后再转储到适当的
.csv
文件:

import pandas as pd

with open("data.csv") as f:
    array = [l.split(",") for l in f.readline().split(";") if l]

pd.DataFrame(array).to_csv("your_array.csv", header=False, index=False)

看起来记录之间用分号分隔,记录中的元素之间用逗号分隔。根据您的详细信息,我可以得到一个列表。内部列表有4行。您的输出正好显示了您想要的内容。字符串之间用
分隔。您可以通过
数组[0][0],数组[0][1]访问它,…
。可能是您被python中的
list
符号弄糊涂了。嗨,Simon,我无法使用数组[0][n]访问值使用n>0,因为数据都在同一行中。我需要在“;”处将数据拆分为行,然后在“,”处拆分数据,这样我就可以对数组元素进行寻址。一旦我将其放入可寻址矩阵中,然后在列中添加值以创建总计。谢谢,但它会生成一个名称“row”未定义错误