2014-09-10 3 views
-2

Я хотел бы отсортировать файл в Python на основе числовых значений:сортировка файлов в Python

Мой входной файл выглядит следующим образом:

66135 - A 
65117 - B 
63301 - C 
63793 - D 

Вывод должен быть:

63301 - C 
63793 - D 
65117 - B 
66135 - A 

Как это сделать?

+2

Что вы пробовали? Пожалуйста, покажите нам свой код и мы предложим предложения. Кроме того, все данные в вашем входном файле все в одной строке или каждая запись в отдельной строке? –

+0

Каждая запись на отдельной строке – Priya

ответ

1
f2.writelines(sorted(f1, key=lambda line:int(line.split()[0]))) 

где f2 ваш выходной файл и f1 ваш входной файл.

+0

Работала нормально, спасибо за ответ – Priya

0

вы можете попробовать этот способ

with open('filename','r') as file: 
    # spilt() the line with '-' 
    lis=[line.strip().split('-') for line in file] 
    # sort the lis using the values 
    print sorted(lis,key=lambda x:int(x[0].strip())) 
+1

последовательный downvoter? пожалуйста, укажите мою ошибку, чтобы я мог узнать –

+0

. Я не понимаю ваших комментариев, что такое серийный downvoter? – Priya

+0

@Priya его не для вас. один парень последовательно раздавал все ответы. Для него/ее –

0

Вот полный код для этого.

with open('inputFileName') as fp: 
    lst = map(lambda s:s.rstrip(), fp.readlines()) 

with open('outputFileName', 'w') as fp: 
    fp.write("\n".join(sorted(lst, key=lambda s:int(s.split()[0])))) 
+0

Эта сортировка не удалась. возьмите пример 1,2,11. таким образом он сортирует 1,11,2, но OP нуждается в 1,2,11 –

+0

@ sundarnatarajСундар. А я этого не замечал. Благодарю. Поэтому каждый использует 'int (split ...'. –

Смежные вопросы