什么python数据类型让我最好地操纵CSV数据?

时间:2017-04-27 20:04:31

标签: python csv types

我试图跟踪"禁止"用户在我的应用程序 用户名,minutes_banned,channel_banned_from

joe,5,general
sally,10,other
bob,50,gaming

我将文件读到一个列表,它由列表列表组成。

我发现很难处理这种形式的数据。例如,我无法让它只输出用户名。

我也不确定如何跟踪每组数据。如果我把bob作为用户名并想检查他被禁止多长时间..我如何将bob与50联系起来?

谢谢。

2 个答案:

答案 0 :(得分:3)

如果用户名是唯一的,并且您不关心特定订单,请将其保存在dict

banned = {'joe': (5, 'general'), 'sally': (10, 'other')}
print "Bob's ban duration is", banned.get('bob', 'forever')

您可以按照不确定的顺序获取所有用户名,例如:all_usernames = banned.keys(),其中包含['sally', 'joe']

答案 1 :(得分:1)

这看起来像一个csv格式的文件,csv模块似乎是一个很好的起点。 DictReader将行读入字典,这使您可以按名称引用单元格。您可以从那里读取一个表格(list dicts)。然后,创建要使用最多的字段的索引。索引是引用表中dict的另一个dict

import csv

with open('banned.txt', newline='') as fp:
    reader = csv.DictReader(fp)
    reader.fieldnames = ['username','minutes_banned','channel_banned_from']
    table = list(reader)

user_index = {entry['username']:entry for entry in table}

user = input('check banned user name: ')
if user in user_index:
    print('banned', user_index[user]['minutes_banned'])
else:
    print('invalid user')