Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序csv列表(不使用csv模块)_Python_Loops_Sorting_Csv_Import From Csv - Fatal编程技术网

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

Python 排序csv列表(不使用csv模块),python,loops,sorting,csv,import-from-csv,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(第[3]项),但我收到了一条错误消息)以及如何在列表中

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

Attendees
ID, name, location, age
001, John, Harper, 53
002, Lucy, Jones, 23 
etc...
我需要将其导入python,然后按年龄对记录进行排序。我想使用某种比较循环(这是我们在课堂上学到的)

我已经将这些记录作为一个长列表导入python,并将其拆分为单独的记录,但我在如何将年龄值转换为整数(尝试了int(第[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()

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

首先,您需要跳过文件中的标题行和标题行,以防止排序中断。接下来,将所有行读入一个列表。最后,根据为
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
关键字更安全。这确保了当脚本超出其作用域时,文件会自动关闭。

那么,您收到的错误消息是什么?TypeError:unorderable types:str()>=int()抱歉,我应该补充一点,我一直在反复使用代码,我发布的内容没有包含获得错误消息的位,即if项[3]>=0:new_list。追加(项)您可以在您的帖子中包含错误消息和更多详细信息。可能您试图转换标题-
int(“年龄”)
?非常感谢您的帮助-我将前两行存储为单独的列表,现在正在处理其余数据-并将年龄值转换为整数,而不显示错误消息。很高兴听到您的帮助。如果你对解决方案感到满意,接受答案是礼貌的。这也将向站点中的其他用户表明问题已经得到了回答,您不需要进一步的帮助。