如何从python文件的多行中提取子字符串

2024-09-20 23:00:08 发布

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

我有一个包含数千行的文件,在该文件中,有一些行类似于:

Line 115463: 08:59:25.106   08:59:24.992877 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Event2f, DIR = 13)    rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 987 
Line 236362: 08:59:28.647   08:59:28.597827 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Eventab, DIR = 1) rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 934 
Line 324964: 08:59:40.456   08:59:40.403644 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Eventac, DIR = 1) rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 934 
Line 341172: 08:59:40.659   08:59:40.616565 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Eventfb, DIR = 13)    rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 987 
Line 373186: 08:59:41.174   08:59:41.104755 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Event2f, DIR = 1) rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 934 
Line 480217: 08:59:44.481   08:59:44.389453 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Eventx1, DIR = 1) rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 934 
Line 505424: 08:59:44.777   08:59:44.701709 ASDF_IIS_CFGDB  GenMod  Ta-SNS__GENERATED_EVENTS (Event1a, DIR = 1) rrc_UlUtranMsg.c (../../../HEDGE/UL3/ASDF/UtranMsg/Uplink/Code/Src) 934 

我只需要提取子字符串

'1a'

'SNS__GENERATED_EVENTS (Event1a, DIR = 1)'

等等。 所以,基本上,'(Event'之后的两个字符

我需要把它们存储在一个列表中或者其他我可以使用的地方。在

我该怎么做?在

到目前为止,我已经尝试了以下代码,但它给了我一些混合的值:

^{pr2}$

我得到的输出是:

[[0], [0], ['2f'], ['2f'], ['ab'], ['ab'], [0], [0], ['ac'], ['ac'], ['fb'], .......]


Tags: dirlineiiseventsgeneratedsnstaasdf
3条回答

如果线的位置总是固定的,韦恩的回答是最有效的。如果位置可能会有所不同,则使用regex是一个不错的情况:

import re
events = []

for line in input_txt_file:
    match = re.search(r'SNS__GENERATED_EVENTS.*?Event(..)', line)
    if match:
        events.append(match.group(1))

这将在每一行中搜索SNS__GENERATED_EVENTS,后面可能还有一些字符,Event然后再搜索另外两个字符,并获取这两个字符。在

只要你能做到这一点,你就会知道:

hexes = [line[99:101] for line in file]

如果有不包含该文本的行,可以执行以下操作:

^{pr2}$

我个人将使用re模块作为子字符串搜索。在

import re

for line in input_txt_file:
    val = ''
    val = re.search('SNS__GENERATED_EVENTS \(Event(.+?), DIR\)', line).group(1)
    print(val)

相关问题 更多 >

    热门问题