如何存储一个数字并仅当一行包含多行时才将其保存到列表中

2024-09-28 20:57:39 发布

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

我有通过网络的数据包,我有一个文本文件中的监控,所以在一开始,我存储在一个变量中的“头时间”,但保存在一个列表中,只有当我发现一个特定的,说“UI服务匹配(HJ)”后面像13行,所以它是查找匹配后的情况。你知道吗

数据是

         ******* DCS = 5    ************** 2016-02-05    13:29:13.58 ****
      From PC19 to PC02
      Network layer link
      ESTABLISH INDICATION (88H) 
         Channel class            
          - power number : 3 
          - Timeslot : 0
         Link supplier            
          - Shapi : 0
          - Channel type : Duplex
          - Normal prio
         L3 Information               
          UI SERVICE MATCH (HJ)
            UI SERVICE Type                  
            - channel establishment

             ******* DCS = 5    ************** 2016-02-05    13:29:18.79 ****
      From PC19 to PC02
      Network layer link
      ESTABLISH INDICATION (88H) 
         Channel class            
          - power number : 4 
          - Timeslot : 0
         Call Load                  
          - Slot:32  Busy:1     Access:1    

代码是

fh = open("moni.txt")
elements = []
for line in fh:
    line = line.rstrip()
    if "******* DCS = 5" in line :
        U=line.split()
        Y = U[6]

    if 'UI SERVICE MATCH (HJ)' in line :
        elements.append(Y)

print elements

输出:

[]

所需输出:

['13:29:13.58']

Tags: toinfromlayeruiservicelinechannel
1条回答
网友
1楼 · 发布于 2024-09-28 20:57:39

您可以尝试使用以下方法简化代码:

fh = open("moni.txt")
elements = []
# First split your file in block of data who belongs together :
for block in fh.read().split("******* DCS = 5    **************"):
    # Check if there is the desired string :
    if 'UI SERVICE MATCH (HJ)' in block :
        # Save the time :
        elements.append(block.split()[1])

print(elements)
# ['13:29:13.58']

相关问题 更多 >