【问题标题】:How to sort numbers and write to new text file如何对数字进行排序并写入新的文本文件
【发布时间】:2020-05-19 23:05:31
【问题描述】:

谁能帮我解决以下问题。我有一项任务,我需要将 txt 文件中的数字从最低值到最高值进行排序。无论数字组合或文本长度如何,都需要将数字从低到高排序。 任何帮助将不胜感激。

文本文件(input.txt)

分钟:2,1,4,3,6,5

最大:1,2,3,4,5,6

平均:1,2,3,4,5,6

我写了一些代码如下,但它只是按字母顺序排列行标题

inputFile = open("input.txt", 'r')
lineList = inputFile.readlines()
lineList.sort()
print (lineList)
for line in lineList:
    print(line)
    with open('inputcopy.txt', 'a') as f:
        for line in lineList:
            lineList.sort()
            f.write(line)

感谢您的帮助

【问题讨论】:

  • 那么您是否希望您的脚本忽略文件中的非数字内容而只收集所有碰巧存在的数字? (即 2、1、4 等,但忽略 'min:'、'max:' 等?)
  • 是的,之后我需要在输出文本文件中添加脚本,但我只需要排列数字

标签: python sorting external-data-source


【解决方案1】:

由于您正在从file 读取数据,因此我们将每一行都作为一个字符串。所以,你需要结合int构造函数使用split方法。

这可以使用列表推导式来实现。

for line in lineList:
    numbers = [int(item) for item in line.split(':')[1].split(',')]

line.split(':')[1] 给出字符串2,1,4,3,6,5

逗号分隔符的另一个split 为我们提供了numbers 的列表。我使用了int 构造函数,因为在split 方法之后我们拥有它们,就像strings

【讨论】:

    【解决方案2】:

    您可以使用正则表达式。请注意,您需要转换为 int 或使用考虑整数表示的自定义函数

    for line in lineList:
       sorted_line = sorted(map(int, re.findall(r'\d+',line)))
    
    
    for line in lineList:
       sorted_line = sorted(re.findall(r'\d+',line), key=lambda x:int(x))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      相关资源
      最近更新 更多