我有一个包含数千行的文件,并且在文件中有一些行,例如:
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)之后的两个字符
我需要将它们存储在列表中或其他可以使用它们的地方。
我怎样才能做到这一点?
到目前为止,我已经尝试了以下代码,但是它给了我一些混合的值:
events = []
for line in input_txt_file:
if "Ta-SNS__GENERATED_EVENTS " not in line: continue
parts = line.split('Event')
event_temp = [0]
for i,part in enumerate(parts):
if part.endswith("Ta-SNS__GENERATED_EVENTS ("): event_temp[0] = parts[i+1].split(None,1)[0].split(',',2)[0]
events.append(event_temp)
print events
我得到的输出是:
[[0],[0],['2f'],['2f'],['ab'],['ab'],[0],[0],['ac'],['ac '],['fb'],.......]
最佳答案
如果线路位置始终固定,则韦恩的答案是最有效的。如果位置可能有所不同,则可以使用正则表达式:
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
和另外两个字符,并获取这两个字符。