我想在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']]
但是它只是一个维度,我不知道如何创建二维数组并插入每个元素到数组中。
请建议我应该使用什么代码来实现这个目的。(我在网站上看了以前的提示,但没有一个对我有效)
下面是一种从CSV获取2D数组的干净方法,该方法也适用于旧版本的Python:
import csv
data = list(csv.reader(open(datafile)))
print(data[1][4])
你已经有了列表的列表,它是一种二维数组你可以把它命名为一个数据[1][1]等等
这是一个2D数组!
可以这样索引:
data[row][value]
例如,获取CSV中第二行的IP地址:
data[1][2]
说明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]])