import re
interface_info = '''
phy#3
Interface wlan1-cabin-2
ifindex 37
wdev 0x300000003
addr 06:53:1a:4e:07:02
ssid SSIDTEST3
type AP
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
Interface wlan1-cabin-1
ifindex 36
wdev 0x300000002
addr 06:53:1a:4e:07:01
ssid SSIDTEST2
type AP
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
Interface wlan1
ifindex 7
wdev 0x300000001
addr 06:53:1a:4e:07:00
ssid SSID1
type AP
channel 6 (2437 MHz), width: 20 MHz, center1: 2437 MHz
phy#2
Interface wlan0
ifindex 6
wdev 0x200000001
addr 00:30:1a:4e:07:ac
type managed
'''
stripped = interface_info.lstrip(' \t\n\r')
ssid_regex = re.compile('Interface wlan1-cabin-2+((.*\n){6})')
ssid_extract = re.search(ssid_regex, stripped)
interface_split = re.split(r'\n', ssid_extract.group(0))
ssid = str(interface_split[4]).strip(' ssid ')
print(stripped)
print (ssid_extract)
print str(interface_split)
print (ssid)
输出:
<b>
<_sre.SRE_Match object at 0x7fb1665e2250>
['Interface wlan1-cabin-2', ' ifindex 37', ' wdev 0x300000003', ' addr 06:53:1a:4e:07:02', ' ssid SSIDTEST3', ' type AP', '']
SSIDTEST3`
</b>
在以上代码的输出中,请注意列表中的每个字符串都有 前缘空间。我正在尝试将这些空间绊倒 字符串最终出现在列表中。
答案 0 :(得分:0)
使用lstrip只会删除phy#3
前的空白字符
您可以做的是使用str.strip和map从split返回的所有项目上使用strip。
interface_split = map(str.strip, re.split(r'\n', ssid_extract.group(0)))
请参见Python demo
如果您只想删除左侧的空白字符,另一种方法可能是首先通过将^\s+
与re.sub一起使用,并用多行标志:
stripped = re.sub(re.compile('^\s+', re.MULTILINE), '', interface_info)
请参见Python demo