我有一个看起来有点像的文本文件:
random text random text, can be anything blabla %A blabla
random text random text, can be anything blabla %D blabla
random text random text, can be anything blabla blabla %F
random text random text, can be anything blabla blabla
random text random text, %C can be anything blabla blabla
Run Code Online (Sandbox Code Playgroud)
当readlines()它进入时,它成为一个句子列表.现在我希望这个列表按照后面的字母排序%.所以基本上,当排序应用于上面时,它应该看起来像:
random text random text, can be anything blabla %A blabla
random text random text, %C can be anything blabla blabla
random text random text, can be anything blabla %D blabla
random text random text, can be anything blabla blabla %F
random text random text, can be anything blabla blabla
Run Code Online (Sandbox Code Playgroud)
有没有一种好方法可以做到这一点,或者我是否必须将每个字符串分解为tubles,然后将字母移动到特定列,然后使用key=operator.itemgetter(col)?
谢谢
In [1]: def grp(pat, txt):
...: r = re.search(pat, txt)
...: return r.group(0) if r else '&'
In [2]: y
Out[2]:
['random text random text, can be anything blabla %A blabla',
'random text random text, can be anything blabla %D blabla',
'random text random text, can be anything blabla blabla %F',
'random text random text, can be anything blabla blabla',
'random text random text, %C can be anything blabla blabla']
In [3]: y.sort(key=lambda l: grp("%\w", l))
In [4]: y
Out[4]:
['random text random text, can be anything blabla %A blabla',
'random text random text, %C can be anything blabla blabla',
'random text random text, can be anything blabla %D blabla',
'random text random text, can be anything blabla blabla %F',
'random text random text, can be anything blabla blabla']
Run Code Online (Sandbox Code Playgroud)