排序csv列表(不使用csv模块)

时间:2015-11-24 13:20:51

标签: python loops sorting csv import-from-csv

我有一个csv文件,其中包含以下格式的大约10行数据:

Attendees
ID, name, location, age
001, John, Harper, 53
002, Lucy, Jones, 23 
etc...

我需要将其导入python,然后按年龄对记录进行排序。我想用某种比较循环来做(这就是我们在课堂上讲授的内容)。

我已将记录导入python作为一个长列表并将其拆分为单独的记录,但我在如何将年龄值转换为整数方面遇到问题(尝试过int(item [3] )但是我得到了一条错误消息)以及我如何逐个遍历列表并参考最后一个没有它们的个人名称。

这是我到目前为止所做的:

text_file = open("attendees.csv", "r")
lines = text_file.readlines()
print(lines)
new_list = []
for line in lines:
    item = line.strip().split(',')
    new_list.append(item)
print (new_list)
text_file.close()

2 个答案:

答案 0 :(得分:0)

您需要跳过输入的前两行。你无法转换,例如age到和整数。

答案 1 :(得分:0)

首先,您需要跳过文件中的标题和标题行,以阻止排序中断。接下来将所有行读入列表。最后根据为age列保存的整数值对行进行排序:

with open('attendees.csv', 'r') as f_input:
    title = next(f_input)
    header = next(f_input)
    rows = [[col.strip('\n ') for col in row.split(',')] for row in f_input]

for row in sorted(rows, key = lambda x: int(x[3])):
    print row

这将为您的示例输入显示以下输出:

['002', 'Lucy', 'Jones', '23']
['001', 'John', 'Harper', '53']

注意,在处理文件时使用Python的with关键字更安全。这可确保在脚本超出其范围时自动关闭文件。