在Python中使用分隔符分割CSV文件

nle07wnf  于 5个月前  发布在  Python
关注(0)|答案(2)|浏览(72)

我有一个CSV文件,其中有288条记录,格式如下(仅提取前3条记录)

20210402,23:55,37684,4.758,0,0,0.000,16238,510,NaN,242.0,-500.000,0.000,500.000,-500.000,10.000,NaN;20210402,23:50,37684,4.758,0,0,0.000,16195,540,NaN,243.0,-530.000,0.000,530.000,-530.000,10.000,NaN;20210402,23:45,37684,4.758,0,0,0.000,16150,540,NaN,243.0,-550.000,0.000,550.000,-550.000,0.000,NaN;

字符串
如果我在记事本中打开此文件,则将其保存为连续字符串。如果我在Excel中打开它,则每个值都在一列中。第一条记录的最后一列与第二条记录的第一列共享,依此类推,如下所示
x1c 0d1x的数据
我试着吐字符串,所以有288个记录使用

with open('dailyData.csv','r') as file:
    array = file.readlines()
    array = [row.split(';') for row in array]


将“;”转换为“,但不拆分字符串
[20210402,23:55,37684,4.758,0,0,0.000,16238,510,NaN,242.0,-500.000,0.000,500.000,-500.000,10.000,NaN','20210402,23:50,37684.
有什么想法吗?
更新
我试着用Pandas

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


这将返回
Int64Index([ 0,1,2,3,4,5,6,7,8,9,... 277,278,279,280,281,282,283,284,285,286],dtype='int64',length=287)
这意味着我可以处理任何记录,但不能处理记录中的元素。
只是希望能够寻址为array[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)


这将打印行,但不会创建我可以寻址的数组。

doinxwow

doinxwow1#

不如这样吧:

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


上述规定允许:
只是希望能够寻址为array[r][c],其中r是0到287,c是0到16。
我假设你的数据是一个长的连续字符串,如你的问题所示。
如果你喜欢,可以很容易地将其转储到pandas DataFrame文件中,然后再转储到适当的.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)

ecbunoof

ecbunoof2#

with open('dailyData.csv','r') as file:
    array = file.readlines()
    array = [x.split(',') for x in row.split(';') for row in array]

字符串

相关问题