Сортировка каждой строки строки числовых данных в текстовом файле с использованием Python

У меня есть текстовый файл с 3 столбцами числовых данных, я хочу отсортировать каждую строку файла отдельно в порядке убывания.

Входной файл:

12 10 5
1 120 3
-1 1 10
-1 -1 -1

Выходной файл:

12 10 5
120 3 1 
10 1 -1
-1 -1 -1

Я просто пытался использовать sorted() функционировать так:

with codecs.open('BI_TA','r') as f:
    with codecs.open('ta_sort','w') as ff:
        for line in f.readlines():
             line=sorted(line)
             ff.write(line)

Но это не работает.

2 ответа

Решение

Заменить:

line=sorted(line)

от:

line=' '.join(sorted(line.split(), key=int, reverse=True))

Скажем, текущая строка `1 120 3'. В этой строке применяются следующие действия:

  1. line.split() -> ['1', '120', '3']
  2. sorted(['1', '120', '3'], key=int, reverse=True) -> ['120', '3', '1'] сортирует в убывающем рудере, рассматривая каждое значение как int потому что key=int,
  3. line = ' '.join(['120', '3', '1']) -> "120 3 1" преобразует список в строку, потому что file.write() принимает только строки.

list(line).sort() должен работать.

Другие вопросы по тегам