(Python)如何根据字符对文本文件行进行排序?

2024-04-26 11:02:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,我把用户信息,如姓名,年龄等。文件必须按年龄排序。在

我怎么做到的?我在一行中有一个用户的信息,不同类型的信息用空格隔开,我做了一个程序,使年龄(例如)在一个3的块中:如果年龄是5,有2个空格,然后字符串“5”。或者如果年龄是110岁,没有空格,只有字符串“110”。年龄是行中的第一个信息,所以我只需要按年龄对行进行排序。在


Tags: 文件字符串用户程序信息类型排序姓名
2条回答

这可以是修改的HistogramSort的任务。如果允许随机访问写入,它将使用可变的行长度(可选)。非常高效,可以处理大量文件。它分类稳定。在

将120个整数计数器初始化为0。在

逐行读取整个文件,得到年龄值和行长度。在

取这条线的长度,把它加到1岁以上的柜台上。在

在第一次检查之后,每个计数器都会告诉您特定时期的所有行所需的空间(字符数)。在

计算计数器的前缀和;这将告诉您在排序时给定时期的行将从何处开始。最后一个计数器给出文件的总大小。在

然后在第二个过程中,逐行读取,将每一行复制到它所属的新文件中(给定年龄值),并更新相应的计数器。在

[当人类的寿命期望值增加时,调整常数120。]

你可以这样做:

result = []

for line in open(fileName).readlines():
  line = line.strip()
  age = line[0:3] #This will get the first 3 characters of the line
  age = int(age)

  thisLine = {"age":age, "line":line}
  result.append(thisLine)

sortedList = sorted(result, key=lambda k: k["age"]) 

基本上你每行都读

-剥去末端车厢返回和其他

-抓住3个三个字符(这将是你的年龄)

-将其转换为整数

-将它们放入字典/哈希映射中

-把它放到一个数组中

-按hashmap的age属性对数组进行排序

希望这有帮助。在

相关问题 更多 >