如何用Python提取nmcli输出的WiFi SSID纯名称(不含多余空格)
解决nmcli输出SSID含多余空格的问题
你的问题出在直接替换所有空格,且没处理nmcli的格式化输出——nmcli默认列表输出是对齐排版的,每行前后会有多余空格,还包含表头行。下面给两种可行的处理方式:
方法1:处理原有命令的输出
不用替换所有空格,而是逐行清理空格并过滤无效行:
import subprocess list_networks_command = 'nmcli -f SSID dev wifi list' output = subprocess.check_output(list_networks_command, shell=True, text=True) # 按行分割输出,过滤空行和表头,清理每行前后空格 ssids = [line.strip() for line in output.splitlines() if line.strip() and not line.startswith('SSID')] # 打印纯SSID列表 for ssid in ssids: print(ssid)
方法2:用nmcli的tabular模式(更推荐)
nmcli支持-t参数生成紧凑的表格输出,没有排版用的多余空格,解析起来更简单:
import subprocess # 使用-t参数生成易解析的输出,-f指定只取SSID字段 list_networks_command = 'nmcli -t -f SSID dev wifi list' output = subprocess.check_output(list_networks_command, shell=True, text=True) # 分割行并过滤空行(空行对应隐藏SSID,可按需保留) ssids = [line for line in output.splitlines() if line] # 打印结果 for ssid in ssids: print(ssid)
简单说明:
- 方法1通过
strip()清理每行前后空格,同时过滤掉表头行和空行,保留纯SSID内容。 - 方法2的
-t参数让nmcli输出更紧凑,直接每行对应一个SSID,避免了排版空格的干扰,处理效率更高。
内容的提问来源于stack exchange,提问作者Amit Lichtman
相关产品推荐
相关产品推荐

