У меня есть текстовый файл со строками как это:
2010-02-18 11:46:46.1287 bla
2010-02-18 11:46:46.1333 foo
2010-02-18 11:46:46.1333 bar
2010-02-18 11:46:46.1467 bla
Простой вид подкачал бы строки 2, и 3 (панель прибывает перед нечто), но я хотел бы сохранить строки (которые имеют ту же дату/время) в их первоначальном заказе.
Как я могу сделать это в Python?
Вопрос о премии: вид GNU может также сделать это?
sorted(array, key=lambda x:x[:24])
Пример:
>>> a = ["wxyz", "abce", "abcd", "bcde"]
>>> sorted(a)
['abcd', 'abce', 'bcde', 'wxyz']
>>> sorted(a, key=lambda x:x[:3])
['abce', 'abcd', 'bcde', 'wxyz']
Встроенная сортировка стабильна, поэтому фактически равные значения по умолчанию остаются в порядке.
import operator
with open('filename', 'r') as f:
sorted_lines = sorted(f, key=operator.itemgetter(slice(0, 24)))
На этом этапе sorted_lines
будет списком отсортированных строк. Чтобы заменить старый файл, создайте новый файл, вызовите new_file.writelines (sorted_lines)
, затем переместите новый файл поверх старого.