在python中使用嵌套for循环读取文本文件

时间:2017-10-12 09:24:51

标签: python-2.7

我有一个文件

section2
Number of configurations:2
Configuration1
Number Of Pw:1
PW1
Frame_Type: E1 Unframed
Line_Code: AMI
Psn_Type:UDP/IPv4
Pw_Type: SAToP
Oam_Status: Enable
Prevent_PW_Broadcast: Enable
Multiplexing_Mode: Source
Out_Label: 1
In_Label: 8190
Payload_Size_Bytes: 128
Jitter_Buffer_Size: 10000
VLAN Tagging:Enable
VLAN ID:100
VLAN PRIORITY:1
file_name: MITOPExTx.img
server_ip: 192.168.205.23
software_version: 4.0(0.5)
EndPW
EndConfiguration
Configuration2
PW1
Frame_Type: E1 Unframed
Line_Code: AMI
Psn_Type: MEF
Pw_Type: SAToP
Oam_Status: Disable
Prevent_PW_Broadcast: Disable
Multiplexing_Mode: Destination
Out_Label: 16
In_Label: 1
Payload_Size_Bytes: 40
Jitter_Buffer_Size: 20000
EndPW
EndConfiguration

从这个文件首先我需要读取配置1,然后根据我需要reed Pw1然后在那之下我需要读取配置。我应该阅读的时间直到Endconfiguration。

完成配置后,我需要阅读配置2和pw。可以有人帮我这个

1 个答案:

答案 0 :(得分:0)

不确定为什么需要嵌套for循环:

test_file = open("Section{}Configurations.txt".format(qvs_section))
read_test_file = test_file.readlines()
count = 1
for line in read_test_file:
    if line.strip() == "PW1":
        print "Config{} Started".format(count)
        continue
    if line.strip() == "EndPW":
        print "Config{} Finished".format(count)
        count += 1
        continue
    print line.strip()

或使用re

import re
config_file=open("Section{}Configurations.txt".format(qvs_section))
config_file_string=config_file.read()
number_of_configs = int((re.findall("Number of configurations:(.*?)\n", config_file_string))[0].strip())
for i in range(number_of_configs):
    print "CONFIGURATION:{}".format(i+1)
    re_pattern="Configuration{}(.*?)EndConfiguration".format(i+1)
    config = re.findall(re_pattern, config_file_string, re.DOTALL)
    for line in config[0].split("\n"):
        print "\t{}".format(line.strip())