读取CSV文件并存储特定列

时间:2020-09-28 19:22:18

标签: python csv

  • 由于模块安装受到限制,因此无法使用熊猫。

必须根据第一列读取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 =[]

解决这个问题的任何建议或有效方法。

1 个答案:

答案 0 :(得分:0)

Trentoncomment中提到,

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())