pythonic从这个列表中提取字符串的方法

时间:2013-11-29 21:26:22

标签: python

如果我有一个列表['default via 192.168.0.1 dev wlan0 proto static \n', '192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.11 \n']什么是提取192.168.0.1192.168.0.11的最pythonic方式

2 个答案:

答案 0 :(得分:4)

使用正则表达式尝试此操作,其中lst是包含数据的列表:

import re
pat = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^/]')
[pat.search(s).group(0) for s in lst]
=> ['192.168.0.1', '192.168.0.11']

以上假设列表中的每个字符串都有一个有效的IPv4 IP,并且在IP之后没有/个字符。

答案 1 :(得分:3)

«大多数pythonic»可能有争议,但沿着这些方向的东西将起作用:

fct = lambda e : [w for w in e.split() if '.' in w and '/' not in w][0]
map( fct, l )

> ['192.168.0.1', '192.168.0.11']