从CSV文件中获取数据并将其转换为变量

时间:2014-06-04 20:45:37

标签: python csv file-io

我有一个格式为Steward,Department,Location,Subnet,Appliance的csv文件。第一行不重要,因为它只包含标题。我想将每一行设置为for循环中的变量以进行数据处理,所需的格式基于以下CSV数据:

Subnet,Location,Department
10.10.240.0/26,bldg1,finance
10.10.240.128/25,bldg2,IT
10.10240.128/25,bldg3,Admin
10.10.244.96/27,bldg4, foo



title =department + ' - ' + location + ' - ' + subnet

1 个答案:

答案 0 :(得分:1)

您可以使用numpy.genfromtxt()

轻松解压缩csv文件
>>> import numpy as np
>>> Stewards, Departments, Locations, Subnets, Appliances = np.genfromtxt("a.csv", delimiter=',', dtype='string', unpack=True)

这将创建5个名为Stewards, Departments... etc的数组,其中包含各自列中csv文件中的每个项目。如果您想跳过标题,可以使用np.genfromtxt( ... , skip_header=1)跳过文件中的第一行。

不要试图将这些数据存储在一堆单独的变量中 - 这将是更多的工作和不好的做法。而是创建一个字典。我只是根据文件中数据的顺序来设置密钥。您可以使用任何您想要的钥匙。

>>> import numpy as np
>>> Stewards, Departments, Locations, Subnets, Appliances = np.genfromtxt("a.csv", delimiter=',', dtype='string', unpack=True)
>>> alist = zip(Stewards, Departments, Locations, Subnets, Appliances)
>>> adict = {i: alist[i] for i in range(len(alist))}
>>> adict ## I just used some letters to fill in the csv file, but as long as you 
          ## didn't use commas in any of the inputs you'll be fine
{0: ('Steward', 'Department', 'Location', 'Subnet', 'Appliance'), 1: ('a', 'b', 'c', 'd', 'e'), 2: ('g', 'h', 'i', 'j', 'k'), 3: ('m', 'n', 'o', 'p', 'q')}

这使用zip()内置和dictionary comprehensions

如果您需要从中提取数据并创建字符串,只需使用for循环。

string_list = []
for i in range(len(adict)):
    string_list.append( ... )