在Python 3中逐行排序.txt文件的内容

时间:2018-10-28 21:36:27

标签: python python-3.x

我想对读入Python的.txt文件的内容从最高数值到最低数值进行排序。

enter image description here

使用以下代码:

with open("externalFile.txt", "r") as file:
    content = file.read()
    print(content)

list = content.splitlines()

def f(text):
    return int(text) if text.isdigit() else text

def f1(text):
    return [ func(z) for z in re.split('(\d+)', text) ]

list.sort(key=f1)

创建一个列表,并在列表中按字母顺序和数字顺序对内容进行排序,如下所示。

enter image description here

但是,我只希望内容在Python中以数字方式排序,请参见下文。

enter image description here

2 个答案:

答案 0 :(得分:2)

如何?

def f1(text):
    name, _, num = text.partition(':')
    return int(num)


with open("sorting.txt", "r") as file:
    l = file.read().splitlines()
    l.sort(key=f1, reverse=True)
    print(l)

答案 1 :(得分:0)

如果您只想按数字排序,则可以使用列表推导,

with open("d:/data.txt") as file:
    read_as_lit = [line.strip().split(":") for line in file]
    sorted_file = sorted(read_as_lit, key=lambda y:int(y[1]), reverse=True)


print(sorted_file)

[['alpha', ' 50'], ['gamma', ' 45'], ['beta', ' 30'], ['alpha', ' 20'], ['gamma', ' 10'], ['alpha', ' 10']]