【问题标题】:Sorting a txt file containing strings and numbers in python在python中对包含字符串和数字的txt文件进行排序
【发布时间】:2021-12-22 10:15:52
【问题描述】:

我想按升序对包含字符串和数字的 txt 文件进行排序。 文件示例:

Berlin 400

London 903

Oslo 905

Washington 300

例如,我希望这个文件按升序排序,如下所示:

Washington 300

Berlin 400

London 903

Oslo 905

我该怎么做?

【问题讨论】:

  • 您到底卡在程序的哪一部分?你能读懂文件吗?你能从整数中确定字母字符吗?你能填写所有找到的值的列表吗?目前,这个问题的范围很广,我们可以回答,因为您没有指出(通过向我们展示您已经开始的代码)问题开始或结束的位置。
  • 请参阅帮助页面How to Ask,了解有关如何创建好问题的更多信息。
  • 到目前为止你尝试了什么?

标签: python list sorting


【解决方案1】:

假设您有一个文件capitals.txt,其内容如下:

Berlin 400
London 903
Oslo 905
Washington 300

您可以考虑将数据解析为namedtuples 列表,然后再将列表排序并写入输出文件:

from collections import namedtuple

CapitalInfo = namedtuple('CapitalInfo', 'name num')

capitals = []
with open('capitals.txt', 'r') as capitals_file:
    for row in capitals_file:
        name, num_str = row.split()
        num = int(num_str)
        capitals.append(CapitalInfo(name, num))

capitals.sort(key=lambda c: (c.num, c.name))

with open('sorted_capitals.txt', 'w') as sorted_capitals_file:
    for name, num in capitals[:-1]:
        sorted_capitals_file.write(f'{name} {num}\n')
    name, num = capitals[-1]
    sorted_capitals_file.write(f'{name} {num}')

上面运行后sorted_capitals.txt的内容是什么:

Washington 300
Berlin 400
London 903
Oslo 905

试试看here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2016-10-28
    • 1970-01-01
    • 2016-07-13
    • 2019-05-26
    • 2021-08-12
    相关资源
    最近更新 更多