读取CSV文件并将其插入python中的2d列表

时间:2014-07-07 08:56:15

标签: python csv multidimensional-array

我想在Python中将CSV文件的数据(网络数据,如:时间,IP地址,端口号)插入到2D列表中。

以下是代码:

import csv
datafile = open('a.csv', 'r')
datareader = csv.reader(datafile, delimiter=';')
data = []
for row in datareader:
    data.append(row)    
print (data[1:4])

结果是:

[['1', '6', '192.168.4.118', '1605', '', '115.85.145.5', '80', '', '60', '0.000000000', '0x0010', 'Jun 15, 2010 18:27:57.490835000', '0.000000000'], 
['2', '6','115.85.145.5', '80', '', '192.168.4.118', '1605', '', '1514', '0.002365000', '0x0010', 'Jun 15, 2010 18:27:57.493200000', '0.002365000'], 
['3', '6', '115.85.145.5', '80', '', '192.168.4.118', '1605', '', '1514', '0.003513000', '0x0018', 'Jun 15, 2010 18:27:57.496713000', '0.005878000']]

但这只是一个方面而且我不知道如何创建2D数组并将每个元素插入到数组中。

请建议我为此目的使用哪些代码。 (我看了网站上的先前提示,但没有一个对我有用)

4 个答案:

答案 0 :(得分:10)

这是一种从CSV获取2D数组的简洁方法,也适用于较旧的Python版本:

import csv
data = list(csv.reader(open(datafile)))
print(data[1][4])

答案 1 :(得分:4)

你已经有了列表列表,这是一种二维数组,你可以像一个数据[1] [1]等那样解决它。

答案 2 :(得分:0)

那是一个2D阵列!

可以像这样索引:

data[row][value]

例如,请在CSV中获取第二行的IP地址:

data[1][2]

答案 3 :(得分:0)

说你的ip_address,time,port的索引是

ip_address = 2         
time = 3               
port = 11              
print [[item[ip_address], item[time], item[port]] for item in data]      

<强>输出

[['192.168.4.118', '1605', 'Jun 15, 2010 18:27:57.490835000'], 
 ['115.85.145.5', '80', 'Jun 15, 2010 18:27:57.493200000'], 
 ['115.85.145.5', '80', 'Jun 15, 2010 18:27:57.496713000']]

您可以在将行添加到data本身

中时执行此操作
for row in data reader:
    data.append([row[ip_address], row[time], row[port]])