必须根据第一列读取CSV文件并将其分组,并存储第二列和第三列的值。
$cat Credentials.csv
Type,Username,Password
Unix,Raju,qwe
Middleware,Anku,asd
Database,Trigun,zxc
Unix,Priti,poi
Middleware,Sheetal,lkj
根据类型,必须在特定路径中输入用户名和密码,以进行进一步处理, 例如:对于Unix,请将工作路径更改为/ some_path / Unix /,然后循环两行。
import csv
#declare list / set
type=set()
master=[]
with open ('/Users/anku/Documents/dev/Credentials.csv', mode='r', encoding='utf-8-sig')as csv_input:
csv_file = csv.reader(csv_input)
next(csv_file)
#get unique value of system types
for row in csv_file:
type.add(row[0])
print(type)
#back to top of the csv file
csv_input.seek(0)
#
for types in type:
print("The value: " + types )
nested = []
for row in csv_file:
if row[0] == types:
nested.append(row[1:3])
print(nested)
master.append(nested)
csv_input.seek(0)
print(master)
输出:
bash-3.2$ /usr/bin/python3 /Users/anku/Documents/dev/ReadFilesCSV.py
{'Middleware', 'Database', 'Unix'}
The value: Middleware
[['Anku', 'asd'], ['Sheetal', 'lkj']]
The value: Database
[['Trigun', 'zxc'], ['Kunal', 'mnb']]
The value: Unix
[['Raju', 'qwe'], ['Priti', 'poi']]
[[['Anku', 'asd'], ['Sheetal', 'lkj']], [['Trigun', 'zxc'], ['Kunal', 'mnb']], [['Raju', 'qwe'], ['Priti', 'poi']]]
bash-3.2$
我试图进入一个列表,但停留在如何通过单个类型循环它们上。 不能使用熊猫,因为模块安装受到限制。仅使用默认安装的模块。 问题:
我们可以根据集合的元素创建列表名称吗?
type[0]=[] # Middleware =[]
解决这个问题的任何建议或有效方法。
答案 0 :(得分:0)
sets
未排序。集合是没有重复元素的无序集合。将集合转换为列表并排序
或者您可以使用ordered dictionary,它会记住您设置其键的顺序,并一次完成所有操作。
from collections import OrderedDict
data = OrderedDict()
with open('/Users/anku/Documents/dev/Credentials.csv', mode='r', encoding='utf-8-sig') as csv_input:
csv_file = csv.reader(csv_input)
next(csv_file)
#get unique value of system types
for row in csv_file:
row_type = row[0]
row_data = row[1:]
# if the dict doesn't already have the key, set it to an empty list
if not row[0] in data:
data[row_type] = []
data[row_type].append(row_data)
然后您可以按照添加顺序查看数据:
print(data.keys()) # Should print the keys in the order they were added
print(data.items())