我有一个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()
答案 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
关键字更安全。这可确保在脚本超出其范围时自动关闭文件。