sorted()returns [] Python

时间:2015-10-08 06:19:10

标签: python sorted

    f = open('2.txt', 'r')
    file_contents = f.read()
    print(file_contents)
    list = f.readline()
    print(sorted(f.readline()))

返回“[]”作为输出。该文件的内容是:

Tom : 3

1 : 1

3 : 0

Tom : 1

You : 0

H : 0

Yo : 1

R : 0

Test : 0

T : 0

Yes : 0

3 : 0

T : 0

H : 0

Tesr : 0

G : 0

H : 0

V : 0

我希望按字母顺序列出所有名称。

2 个答案:

答案 0 :(得分:0)

您正在阅读文件的第一行,并且您的第一行(可能是空格)中似乎没有任何字符串。

这里有一些要点首先作为pythoinc方式,您可以使用with语句打开文件,在文件结束时关闭文件,其次可以使用file.readlines()返回全部列表中的行。但是如果你想使用sorted,因为文件对象是可迭代的,你只需将文件对象传递给sorted:

with open('2.txt', 'r') as f :
    print(sorted(f))

答案 1 :(得分:0)

您的代码已使用f.read()在整个文件中读取,文件指针位于末尾。您可以使用f.seek()将文件指针移回开头,如下所示:

with open('2.txt', 'r') as f:       # Automatically close the file afterwards
    file_contents = f.read()        # Read whole file
    print(file_contents)            # Print whole file

    f.seek(0)                       # Move back to the start
    list = f.readline()             # Read first line again
    print(sorted(f.readline()))     # Sort the characters in the first line

然后,您会发现只读取第一行,sorted()最终会对该行中的字符进行排序。

您可能要做的事情如下:

with open('2.txt', 'r') as f:               # Automatically close the file afterwards
    file_contents = f.readlines()           # Read whole file as a list of lines
    print(''.join(sorted(file_contents)))   # Print the sorted lines

将显示以下内容:

1 : 1
3 : 0
3 : 0
G : 0
H : 0
H : 0
H : 0
R : 0
T : 0
T : 0
Tesr : 0
Test : 0
Tom : 1
Tom : 3
V : 0Yes : 0
Yo : 1
You : 0