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

尝试将带有数字的txt文件读入列表,然后使用Python进行排序,python,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'] 我猜我

我有一个单行的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']

我猜我阅读文本文件的方式可能有问题,但我似乎找不到合适的方法。

作为一行程序有点模糊,但基本上:

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

  • 阅读1行:
    f.readline()
  • 在字符上拆分该行:
    。拆分(',')
  • 字符串的
    列表
    映射到
    int
    值:
    Map(int,list)
  • int
    列表进行排序:
    已排序(列表)

  • 作为一个单行程序有点模糊,但基本上:

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

  • 阅读1行:
    f.readline()
  • 在字符上拆分该行:
    。拆分(',')
  • 字符串的
    列表
    映射到
    int
    值:
    Map(int,list)
  • int
    列表进行排序:
    已排序(列表)
  • 执行它所说的:它逐行读取文件。在您的示例中,只有一行,因此长度为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关键字打开文件,可以逐行迭代。然后,在每行上使用字符串方法,该方法返回字符串列表。然后,通过对列表中的每个项应用int类型转换函数,我使用map将这些字符串转换为整数。然后可以对该列表进行排序。请务必查看Python文档中的

    没有输入文件的测试:

    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]
    
    执行它所说的:它逐行读取文件。在您的示例中,只有一行,因此长度为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关键字打开文件,可以逐行迭代。然后,在每行上使用字符串方法,该方法返回字符串列表。然后,通过对列表中的每个项应用int类型转换函数,我使用map将这些字符串转换为整数。然后可以对该列表进行排序。请务必查看Python文档中的

    没有输入文件的测试:

    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]
    

    注意,您还必须将这些
    string
    转换为
    int
    ,否则
    10
    将在
    7
    之前进行排序。例如,为什么不将
    数据=(map(int,numbers.split(',))
    ?@PadraicCunningham——您是说在测试中?我之所以留在“数据”列表中,是因为它与后一个示例关联,即多行多个数字。当然,您的建议也适用于此最小测试。感谢此功能,因为我可以打印数据并进行未排序,然后打印排序(数据)以进行排序。太好了,谢谢!注意,您还必须将这些
    string
    转换为
    int
    ,否则
    10
    将在
    7
    之前进行排序。例如,为什么不将
    数据=(map(int,numbers.split(',))
    ?@PadraicCunningham——您是说在测试中?我之所以留在“数据”列表中,是因为它与后一个示例关联,即多行多个数字。当然,您的建议也适用于此最小测试。感谢此功能,因为我可以打印数据并进行未排序,然后打印排序(数据)以进行排序。太好了,谢谢!