Python 如何存储一个数字并仅当一行后面有多行时将其保存到列表中
我有通过网络的数据包,我有一个文本文件中的监控,所以在一开始我将“头时间”存储在一个变量中,但只有当我发现一个特定的“UI服务匹配(HJ)”后面有13行,所以它是一个接一个的查找匹配 数据是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
******* 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”
是正确的文件吗?是的,我刚刚运行了它,它生成了所需的输出。确保文件确实在您要查找的位置。