我有一个格式为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
答案 0 :(得分:1)
您可以使用numpy.genfromtxt()
>>> 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( ... )