2015-04-25 271 views
-4

我有一個列表,我想按字母順序排序,但它不起作用。我已經寫了這一點,但它並不能很好地工作:將列表按字母順序排序

#!usr/bin/python 
f = open("test.txt","r") #opens file with name of "test.txt" 
myList = [] 
for line in f: 
    myList.append(line) 
f.close() 
print myList 
subList = [] 

for i in range(1, len(myList)): 
    print myList[i] 
    subList.append(myList[i]) 

subList.sort() 
print subList 

這是文本文件:

Test List 
ball 
apple 
cat 
digger 
elephant 

,這是輸出:

Enigmatist:PYTHON lbligh$ python test.py 
['Test List\n', 'ball\n', 'apple\n', 'cat\n', 'digger\n', 'elephant'] 
ball 

apple 

cat 

digger 

elephant 
['apple\n', 'ball\n', 'cat\n', 'digger\n', 'elephant'] 

任何故障診斷是非常有幫助。謝謝

N.B.我正在使用python 2.7.9

+2

請解釋什麼是不工作?您的輸出似乎按排序順序排列。 – Abhijit

+0

輸出被排序,雖然 – RafaelC

+0

它應該對它進行排序,然後用排序後的數據替換文件中的項目 –

回答

1

你剛剛忘記覆蓋文件,就這些。

with open('test.txt', 'r') as inf: 
    lst = inf.readlines() # much easier than iterating and accumulating 

lst[1:] = sorted(lst[1:]) # this will leave the first line: "Test List" intact 

with open('test.txt', 'w') as outf: 
    outf.writelines(lst) # re-write the file 
+0

我在最後加上了這個:['Test List \ n','ball \ n','apple \ n','cat \ n','digger \ n','elephant \ n'] 球 蘋果 貓 挖掘機 大象 [ '蘋果\ n', '球\ n', '貓\ n', '挖掘機\ n', '象\ n'] 回溯(最近調用最後一個): 文件「nest copy.py」,第17行,在 lst = f.readlines()#比迭代和累加更容易 ValueError:關閉文件上的I/O操作 –

+1

對不起,並誤解了什麼你的意思是。所有的工作都很好,除了我的意思是「inf」,而不是「f」in「lst = f.readlines()」 –

+0

@LukeBligh oops,是的。編輯。 –

-1
​​
+0

我沒有失望,但看起來你正在參加Python混淆比賽。 – Matthias

+0

@Matthias我喜歡這種東西的Python。很好玩。 – 0x1337

0

嘗試了這一點:

f = open("test.txt","r") #opens file with name of "test.txt" 
myList = [] 
for line in f: 
    myList.append(line) 
f.close() 
print myList 
subList = [] 
for i in range(1, len(myList)): 
    subList.append(myList[i]) 

subList.sort() 
with open("test.txt","w") as f: 
    for x in subList: 
     f.write(str(x))