我希望能够使用python将非特定字符串从列表中分离出来

我希望能够使用python将非特定字符串从列表中分离出来,python,regex,string,Python,Regex,String,我有这个字符串: 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 2:eth0:mtu 1500 qdisc mq state UP qlen 1000 我希望能够从此字符串中删除“eth0”部分,但它可能并不总是eth0!不过,它在“2:”部分之后的定位是一致的 有什么想法吗 编辑: 总体思路是隔离接口名“lo”、“eth0”等。。下面是一个较长的示例: 1: lo:

我有这个字符串:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
2:eth0:mtu 1500 qdisc mq state UP qlen 1000
我希望能够从此字符串中删除“eth0”部分,但它可能并不总是eth0!不过,它在“2:”部分之后的定位是一致的

有什么想法吗

编辑:

总体思路是隔离接口名“lo”、“eth0”等。。下面是一个较长的示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:e0:c8:10:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global eth0
    inet 192.168.200.16/32 scope global eth0
    inet 192.168.200.17/32 scope global eth0
    inet 192.168.200.18/32 scope global eth0
3: gre0: <NOARP> mtu 1476 qdisc noop state DOWN 
    link/gre 0.0.0.0 brd 0.0.0.0
4: 3g-wan1: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 3
    link/ppp 
1:lo:mtu 16436 qdisc noqueue状态未知
链接/环回00:00:00:00:00 brd 00:00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255作用域主机lo
2:eth0:mtu 1500 qdisc mq状态更新qlen 1000
链路/以太网00:e0:c8:10:00:00 brd ff:ff:ff:ff:ff:ff:ff:ff
inet 192.168.100.1/24 brd 192.168.100.255作用域全局eth0
inet 192.168.200.16/32作用域全局eth0
inet 192.168.200.17/32范围全局eth0
inet 192.168.200.18/32范围全局eth0
3:gre0:mtu 1476 qdisc noop状态关闭
链接/gre 0.0.0.0 brd 0.0.0.0
4:3g-wan1:mtu 1500 qdisc noop状态下降qlen 3
链接/购买力平价

编辑2:更新问题的新答案

使用
re.findall(r'\d+:(.*):',字符串)


编辑2:更新问题的新答案

使用
re.findall(r'\d+:(.*):',字符串)


不清楚2是否为固定零件。您可以尝试以下方法:

import re
re.sub("(\d*:)[^:]*:(.*)", "\\1\\2", "2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000")

不清楚2是否为固定零件。您可以尝试以下方法:

import re
re.sub("(\d*:)[^:]*:(.*)", "\\1\\2", "2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000")

在该命令的输出上,有两件已知的事情:

  • 要检查的接口的名称
  • 格式
    NB:NAME:DESCRIPTION
这里有一个regexp:

>>> s = "2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000"
>>> re.sub('\d+: eth0: ', '', s)
'<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000'
现在,如果您使用
iface
being
lo
作为参数调用它,它将为您提供
lo
接口参数


HTH

在该命令的输出上有两个已知的东西:

  • 要检查的接口的名称
  • 格式
    NB:NAME:DESCRIPTION
这里有一个regexp:

>>> s = "2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000"
>>> re.sub('\d+: eth0: ', '', s)
'<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000'
现在,如果您使用
iface
being
lo
作为参数调用它,它将为您提供
lo
接口参数


HTH

对于这样简单的操作,您不需要正则表达式

使用
split()
。假设
s
是您的字符串:

pre, x, after = s.split(': ', 2)
s_without_x = ': '.join([pre, after])
结果:

>>> x
'eth0'
>>> s_without_x
'2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000'
>x
“eth0”
>>>s_无_x
'2:mtu 1500 qdisc mq状态更新qlen 1000'

如果要将其应用于任何行,可以选中
if s[0].isdigit()

这样简单的操作不需要正则表达式

使用
split()
。假设
s
是您的字符串:

pre, x, after = s.split(': ', 2)
s_without_x = ': '.join([pre, after])
结果:

>>> x
'eth0'
>>> s_without_x
'2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000'
>x
“eth0”
>>>s_无_x
'2:mtu 1500 qdisc mq状态更新qlen 1000'


如果要将其应用于任何行,可以选中
if s[0].isdigit()

您尝试了什么?最好张贴代码,说明您的理解在哪里,这样人们就可以对其进行解释。我建议研究re.sub()
,但它可能并不总是eth0那可能是什么呢?@Cthulhu可能是eth1,lo,eth0-0,wan1。。。取决于指定的接口name@user2386137,对于这个较长的示例,您希望得到什么样的输出?@Dogbert类似于包含“l0”、“eth0”、“gre0”和“3g-wan1”的列表,您尝试了什么?最好张贴代码,说明您的理解在哪里,这样人们就可以对其进行解释。我建议研究re.sub()
,但它可能并不总是eth0那可能是什么呢?@Cthulhu可能是eth1,lo,eth0-0,wan1。。。取决于指定的接口name@user2386137,对于那个较长的示例,您到底想要什么输出?@Dogbert沿着包含“l0”、“eth0”、“gre0”和“3g-wan1”的列表的行,2不是固定的部分。例如,我想在更新的示例中隔离lo、eth0、gre0和3g-wan1。2不是固定的部分。例如,我想在更新的示例中隔离lo、eth0、gre0和3g-wan1接口的名称并不总是eth0。。我可能会尝试用另一种方法获取特定的接口名称,并使用它。这就是为什么我建议您使用参数名
iface
接口的名称并不总是eth0。。我可能会尝试以另一种方式获得特定的接口名称,并使用此名称。这就是为什么我建议您使用参数名称
iface
@zmo,最初的问题是
“2:“尽管
部分是一致的。我现在将编辑我的答案。@zmo,原来的问题是:
“2:“部分是一致的,尽管
。现在将编辑我的答案。
pre, x, after = s.split(': ', 2)
s_without_x = ': '.join([pre, after])
>>> x
'eth0'
>>> s_without_x
'2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000'