Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何存储一个数字并仅当一行后面有多行时将其保存到列表中_Python - Fatal编程技术网

Python 如何存储一个数字并仅当一行后面有多行时将其保存到列表中

Python 如何存储一个数字并仅当一行后面有多行时将其保存到列表中,python,Python,我有通过网络的数据包,我有一个文本文件中的监控,所以在一开始我将“头时间”存储在一个变量中,但只有当我发现一个特定的“UI服务匹配(HJ)”后面有13行,所以它是一个接一个的查找匹配 数据是 ******* DCS = 5 ************** 2016-02-05 13:29:13.58 **** From PC19 to PC02 Network layer link ESTABLISH INDICATION (88H

我有通过网络的数据包,我有一个文本文件中的监控,所以在一开始我将“头时间”存储在一个变量中,但只有当我发现一个特定的“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']

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

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']

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

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']

您是否考虑过反向迭代文件?我认为您在循环中没有正确读取文件的内容。要将文件内容存储为字符串行列表,您应该执行
lines=fh.read().splitlines()
(当然,在声明循环之前)我猜您只是在
元素中添加了Y(您的日期时间)
,如果在同一行中有
“UI服务匹配(HJ)”
,这绝不是事实(您可以通过“块”分割数据)例如,如果一个块包含所需的
'UI服务匹配(HJ)
,则获取该块的日期时间。您的代码看起来应该可以工作。
“moni.txt”
是正确的文件吗?是的,我刚刚运行了它,它生成了所需的输出。确保文件确实位于您要查找的位置。是否考虑过反向迭代文件?我认为您在循环中没有正确读取文件的内容。要将文件内容存储为字符串行列表,您应该执行
lines=fh.read().splitlines()
(当然,在声明循环之前)我猜您只是在
元素中添加了Y(您的日期时间)
,如果在同一行中有
“UI服务匹配(HJ)”
,这绝不是事实(您可以通过“块”分割数据)例如,如果一个块包含所需的
'UI服务匹配(HJ)
,则获取该块的日期时间。您的代码看起来应该可以工作。
“moni.txt”
是正确的文件吗?是的,我刚刚运行了它,它生成了所需的输出。确保文件确实在您要查找的位置。