尝试将带有数字的txt文件读入列表,然后使用Python进行排序

时间:2014-09-12 16:15:41

标签: python

我有一行txt文件file1.txt,它有一系列10个数字;

10,45,69,85,21,32,11,71,20,30

我想从txt文件中获取这些数字,然后将它们添加到列表中,然后按升序对数字进行排序。

我试过了

myfile1 = open('file1.txt', 'r').readlines()

但这似乎给了我一个长度为1的列表,显然无法对其进行排序。

In [101]: myfile1
Out[101]: ['10,45,69,85,21,32,11,71,20,30']

我猜我在阅读文本文件时出现了问题,但我似乎无法找到合适的方法。

2 个答案:

答案 0 :(得分:2)

有点混淆作为1-liner,但基本上是:

with open('file1.txt', 'r') as f:
    data = sorted(map(int, f.readline().split(',')))

这是做什么的:

  1. 阅读1行:f.readline()
  2. ','字符上拆分该行:.split(',')
  3. list的{​​{1}}映射到string值:int
  4. map(int, list)list
  5. int进行排序

答案 1 :(得分:2)

.readlines()执行它所说的内容:它逐行读取文件。在您的示例中,只有一行,因此长度为1.

使用这一行,你需要用逗号分隔:

with open(file1.txt,'r') as myfile:
    for line in myfile:
        print sorted(map(int, line.split(',')))

或者,如果您有多行包含大量数字:

data = []
with open(file1.txt,'r') as myfile:
    for line in myfile:
        data.extend(map(int, line.split(',')))
print sorted(data)

这里我使用with关键字打开文件,可以逐行迭代。然后,在每一行上使用split字符串方法,返回字符串列表。然后,我使用map将这些字符串转换为整数,方法是将int类型转换函数应用于列表中的每个项目。然后可以对该列表进行排序。请务必查看Python文档中的string methods page

没有输入文件的测试:

numbers = "10,45,69,85,21,7,32,11,71,20,30"
data = []
data.extend(map(int, numbers.split(',')))
print sorted(data)

打印

[7, 10, 11, 20, 21, 30, 32, 45, 69, 71, 85]