如何使用python根据行中的特定模式对行进行排序

2024-05-12 23:03:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我档案里有这样的台词

1)  /^void UART0_ErrInterrupt(void)$/;" kind:function line:1367 signature:(void)
2)  /^tUI8 UART0_Get_TIE_Flag( void )$/;" kind:function line:211 signature:( void )
3)  /^tUI8 UART1_Get_TIE_Flag( void )$/;" kind:function line:281 signature:( void )

我需要使用python对这些行进行排序。我需要一行接一行的排序:每行。例如,在上面的行中,行的顺序应该是2)、3)、1)升序。我该怎么做?在


Tags: get排序linefunction档案flagsignaturekind
2条回答

您可以定义一个函数来解释如何进行排序:

def sortkey(line):
    # find the number after the first "line:" and convert it to an integer
    return int(re.search(r"(?<=line:)\d+", line).group())

并将该函数传递给排序函数/方法:

^{pr2}$

sorted与自定义键一起使用

>>> import re
>>> with open('file.txt') as f:
...     lines = sorted(f, key=lambda line: int(re.search(r"(?<=line:)\d+", line).group()))

>>> for l in lines:
...     print l

2)  /^tUI8 UART0_Get_TIE_Flag( void )$/;" kind:function line:211 signature:( void )

3)  /^tUI8 UART1_Get_TIE_Flag( void )$/;" kind:function line:281 signature:( void )

1)  /^void UART0_ErrInterrupt(void)$/;" kind:function line:1367 signature:(void)

相关问题 更多 >