我希望在一个短语出现的行开头处拆分一些文字。这是一些示例文本:
Loopback0 is up, line protocol is up
Internet Address 10.90.3.38/32, Area 303953, Attached via Network Statement
Process ID 1, Router ID 10.90.3.38, Network Type LOOPBACK, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Loopback interface is treated as a stub Host
GigabitEthernet0/1 is up, line protocol is up
Internet Address 10.1.1.1/29, Area 303953, Attached via Network Statement
Process ID 1, Router ID 10.90.3.38, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.90.3.38, Interface address 10.1.1.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
No Hellos (Passive interface)
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 3/3, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 0, maximum is 0
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
Message digest authentication enabled
No key configured, using default key id 0
我想搜索"启动,行协议启动",然后让re.split()仅在此字符串出现的行的开头拆分
像这样:
Loopback0 is up, line protocol is up
Internet Address 10.90.3.38/32, Area 303953, Attached via Network Statement
Process ID 1, Router ID 10.90.3.38, Network Type LOOPBACK, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Loopback interface is treated as a stub Host
然后:
GigabitEthernet0/1 is up, line protocol is up
Internet Address 10.1.1.1/29, Area 303953, Attached via Network Statement
Process ID 1, Router ID 10.90.3.38, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.90.3.38, Interface address 10.1.1.1
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
etc
目前,如果我搜索"已启动,则行协议已启动" - 它在那个确切的位置分开。
由于
答案 0 :(得分:1)
我假设你的字符串中有新行/转义字符:
# big_string is the data you want to split
esc_char = "\\n"; search_str = "is up, line protocol is up"
output = []
for line big_string.split( esc_char ):
if not output:
output.append(line)
else:
if search_str in line:
output.append(line)
else:
output[-1].extend(line)
<强>声明:强>
我有点不确定你将如何将你的big_string
分成几行,也许其他人可以改进那部分