在Python中拆分CSV文件,并用分号分隔记录
我有一个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条记录使用在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
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”未定义错误