我正在写一个python程序,在那里我做了一些os.system(cmd)
。我需要从终端输出中提取一个单词。输出包含一系列信息。在这些信息中,我只需要参数address
,作为一个简单的字符串。我该怎么做呢?这是一个输出的例子:
--------------------------------
General | dbus path: /org/freedesktop/ModemManager1/Bearer/1
| type: default
--------------------------------
Status | connected: yes
| suspended: no
| interface: wwp0s20f0u3i2
| ip timeout: 20
--------------------------------
Properties | apn: wap.tim.it
| roaming: allowed
--------------------------------
IPv4 configuration | method: static
| address: 10.200.210.208
| prefix: 27
| gateway: 10.200.210.209
| dns: 217.200.201.65, 217.200.201.64
| mtu: 1500
--------------------------------
Statistics | duration: 1290
我做过:
proc=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, )
output=proc.communicate()[0]
print(output)
但很明显,它返回了整个输出。在命令中还包含grep
不是一个好的解决方案。输出格式不正确。我需要:
10.200.210.208
2条答案
按热度按时间2w3kk1z51#
您可以按照以下方式使用正则表达式执行该任务
说明:我使用带有单个捕获组的模式,该模式封装在
(
)
中,然后使用.group(1)
进行访问免责声明:我假设地址行总是存在的,地址是以4个基数为10的数字的形式剪切的
.
字符。注意:为了简洁起见,我将
output
设置为多行字符串,而不是调用命令。bzzcjhmw2#
Python有elagent和simple文本处理方法,可用于提取数据,如使用string.find
产出数量
以后如果你想像这样清理输出
其输出#