我有一个使用regular express提取的列表,列表如下:
SRM Video Dest UDP QAM QAM PID In Out Detected Input Output PSI Uptime
Session ID ID Intf IpAddress Port Chan Domain Remap ProgNo ProgNo Bitrate State State Detected (s) Encryption
-------------------- --- ----- --------------- ----- -------- ------ ----- ------ ------ -------- ----- ------ -------- ------ ----------
000a000905000176794c 1 1 232.232.40.1 55000 0/0/48 2 No 62351 62351 46000 Off On Yes 3175405 Clear
000a000905000176794d 1 1 232.232.40.1 55000 0/0/49 2 No 62351 62351 46000 On On Yes 3175405 Clear
000a000905000176794e 1 1 232.232.40.1 55000 0/0/50 2 No 62351 62351 46000 Off Off Yes 3175405 Clear
读取逻辑如下,其中w00和w0是两个命令行。我在两个命令之间提取了内容。你知道吗
with open(file, 'r', encoding='UTF-8') as fp_nei:
fp_reader = fp_nei.read()
pat = re.compile(w00 + '(.*?)' + w0, re.S)
videosession = pat.findall(fp_reader)
当“检测到的比特率”为零或“输入状态”为“关闭”时,我想过滤行。你知道吗
如下所示:
SRM Video Dest UDP QAM QAM PID In Out Detected Input Output PSI Uptime
Session ID ID Intf IpAddress Port Chan Domain Remap ProgNo ProgNo Bitrate State State Detected (s) Encryption
-------------------- --- ----- --------------- ----- -------- ------ ----- ------ ------ -------- ----- ------ -------- ------ ----------
000a000905000176794c 1 1 232.232.40.1 55000 0/0/48 2 No 62351 62351 46000 Off On Yes 3175405 Clear
000a000905000176794e 1 1 232.232.40.1 55000 0/0/50 2 No 62351 62351 46000 Off Off Yes 3175405 Clear
我试着使用下面这样一种简单的方法,但是输出似乎显示了所有的行,而不是带有“Off”的行。你知道吗
for line in videosession:
if "Off" in line:
print(line)
你能给它照点光吗?你知道吗
非常感谢!你知道吗
我知道了。谢谢大家的帮助。 实际上它是一个包含列表的列表。您需要从列表中提取每一行并将它们合并为一个新列表。 这就是为什么我的代码在一开始没有工作。你知道吗
这是密码。你知道吗
必须按
splitlines
剪切文本:然后在空格处拆分每行:
检查一下
必须省略空行和以“-”或“Session”开头的行。你知道吗
您需要拆分行并比较列。这些线看起来像是分开的。所以一旦你拆分了它,列索引就固定了。示例:检测到的比特率为10,输入状态为11。你知道吗
注意:文件读取和删除头是没有效率的。如果headers是常量,那么只需执行lines=lines[3:]即可直接获得行,而不是for循环。你知道吗
相关问题 更多 >
编程相关推荐