根据正则表达式匹配或类似的东西对字符串列表进行排序

gar*_*arg 3 python sorting

我有一个看起来有点像的文本文件:

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)

谢谢

lli*_*lib 7

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)