繁体   English   中英

按前 N 个字符对字符串进行排序

[英]Sort strings by the first N characters

我有一个包含以下行的文本文件:

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 行(bar 在 foo 之前),但我想保留行(具有相同日期/时间)的原始顺序。

我怎样才能在 Python 中做到这一点?

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) ,然后将新文件移到旧文件上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM