如何在文件中找到最大的multipledigit数并对文件进行排序(Python)

2024-09-29 17:15:35 发布

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

我想知道如何根据数字对文本文件中的值进行排序,特别是在名称前面的数字。理论上,程序应该扫描所有的数字,将最大的一个移到顶部,然后重复第二个最大的,如果我是正确的。 测试用例:

000870, Angela
455812, Billy
324192, Clyde
111392, Dom
928144, Erika

不幸的是,到目前为止,我还没有找到任何可以处理多个数字和字符串的方法。 结果应该是这样的,从最高到最低:

928144, Erika
455812, Billy
324192, Clyde
111392, Dom
000870, Angela

Tags: 方法字符串程序名称排序测试用例数字理论
3条回答

哈姆扎的答案是完美的。但是,我将给您另一个使用Pandas的选项,它对于管理逗号分隔的值更有效;例如,如果两个人的号码相同,则可以按字母顺序排列

import pandas as pd

df = pd.read_csv("data_file.csv", header=None)

df.sort_values(by=[0, 1], inplace=True)
print(df)

而且,如果你想要快速的东西,pandas更方便。它实际上比python快得多。对我来说,我肯定会使用它

尝试:

with open('test.txt') as f:
    lines = f.readlines()
lines = [l.split(",") for l in lines]
lines = sorted(lines, key=lambda x: x[0], reverse = True)
lines = [",".join(l) for l in lines]

print(lines)

>> ['928144, Erika',
 '455812, Billy\n',
 '324192, Clyde\n',
 '111392, Dom\n',
 '000870, Angela\n']

哇,你们的答案真是天才

但我更喜欢这样做,更容易理解:)

textFile = """
000870, Angela
455812, Billy
111392, Dom
324192, Clyde
928144, Erika
"""

# if every number are with fixed digit

tmpList = textFile.split("\n")  # create a tmp list

for i in range(tmpList.count('')):  # remove empty string
    tmpList.remove('')

tmpList.sort(reverse = True)  # sort the list
                        
print(“\n”.join(tmpList))  # you can make a function to return it instead of print

相关问题 更多 >

    热门问题