2014-11-25 11 views
6

chciałbym uporządkować plik „shopping.txt” w porządku alfabetycznymSortowanie plik tekstowy alfabetycznie (Python)

shopping = open('shopping.txt') 
line=shopping.readline() 
while len(line)!=0: 
    print(line, end ='') 
    line=shopping.readline() 
#for eachline in myFile: 
# print(eachline) 
shopping.close() 

Odpowiedz

6

Korzystanie sorted funkcja.

with open('shopping.txt', 'r') as r: 
    for line in sorted(r): 
     print(line, end='') 
+1

Czy możesz mi powiedzieć, czy to zajmie wszystkie linie w pamięci. Jak by to działało. Czy to odczytuje dane wejściowe leniwie. –

+1

@AkshayHazari: 'sorted()' ładuje wszystkie linie w pamięci. Aby uniknąć ładowania wszystkich linii, możesz wywołać zewnętrzne polecenie 'sort' lub [zaimplementować je w Pythonie] (http://stackoverflow.com/a/16954837/4279) – jfs

14

Łatwym sposobem, aby to zrobić jest za pomocą sort() lub sorted() funkcje.

lines = shopping.readlines() 
lines.sort() 

Alternatywnie:

lines = sorted(shopping.readlines()) 

Wadą jest to, że trzeba przeczytać cały plik do pamięci, choć. Jeśli to nie jest problem, możesz użyć tego prostego kodu.

18

Wystarczy pokazać coś innego zamiast robić to w Pythonie, można to zrobić z wiersza poleceń w systemach Unix:

sort shopping.txt -o shopping.txt 

i plik jest posortowana. Oczywiście, jeśli naprawdę chcesz pytona do tego: rozwiązanie proponowane przez wiele innych osób z plikiem do odczytu i sortowaniem działa dobrze