Python 将文件中的数据添加到列表以进行排序

Python 将文件中的数据添加到列表以进行排序,python,Python,我的文本文件包含一些整数值,如下所示: 100 200 300 400 500 600 700 800 900 1000 我想将它们添加到列表中,然后对它们进行排序并打印排序后的列表。我试过这样的方法: file = open("sample.txt","r") list1 = [] for line in range(1,11): data = file.readline(line) list1.append(data) sortedlist = list1.sort(k

我的文本文件包含一些整数值,如下所示:

100
200
300
400
500
600
700
800
900
1000
我想将它们添加到列表中,然后对它们进行排序并打印排序后的列表。我试过这样的方法:

file = open("sample.txt","r")
list1 = []

for line in range(1,11):
    data = file.readline(line)
    list1.append(data)

sortedlist = list1.sort(key=int)
print sortedlist
file.close()
['1', '00', '\n', '200\n', '300\n', '400\n', '500\n', '600\n', '700\n', '800\n']
但我犯了一个错误,比如:

Traceback (most recent call last):
  File "o_2.py", line 8, in <module>
    sortedlist = list1.sort(key=int)
ValueError: invalid literal for int() with base 10: ''

实际上,我对python非常陌生。因此,如果有人能解释整个案件的解决方案,这将是非常有帮助的我。提前感谢。

您看错了列表;不取行号,但取每行的最大字符数:

file.readline([size])

从文件中读取一整行。字符串中保留尾随的换行符(但在文件结束时可能不存在) 不完整的行)。[6] 如果大小参数存在并且 非负,它是最大字节数(包括尾随字节) 换行符)并返回不完整的行。当大小不是0时, 只有在立即遇到EOF时,才会返回空字符串

如果您只是执行
file.readline()
,代码就会正常工作:

当前代码尝试只读取第一行的1、2和3个字符,这导致分别读取
'1'
'00'
'\n'
换行符,第2行最多4个字符(
'200\n'
)等


然而,它也不是很像蟒蛇;我会这样写:

with open("sample.txt") as file:
     list1 = [ int(line) for line in file ]

sortedlist = list1.sort()
print sortedlist
with
自动关闭缩进块末尾的文件
for
文件的循环自动在其行上迭代<代码>[iterable中的var表达式]是一种列表理解,这是一种较短的方法:

result = []
for var in iterable:
    result.append(expression)
或者,正如Jon Clements所建议的,如果您真的想按行的数值对行进行排序,但要将它们保留为字符串:

with open('sample.txt') as file:
    list1 = list(file)  # all lines as a list
    print sorted(list1, key=int)

您的代码不会删除空格和换行符

进口稀土 txt=打开('文件').read() List=Re.findall('\d',txt)
现在列表包含所有数字所有其他符号都将被跳过

您是否尝试将
list1
制作成一个numpy数组,然后对其进行排序?对于传递给
int
的内容,
行.strip()
是多余的-它已经进行了剥离。。。此外,这意味着OPs列表最终为
int
s。。。谁知道呢,他们可能还需要字符串。。。看起来几乎像所需的整个代码(在使用
之后)可以是:
打印排序(file,key=int)
with open('sample.txt') as file:
    list1 = list(file)  # all lines as a list
    print sorted(list1, key=int)