例: 这是一组 网卡的信息。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:1c:42:a5:57:7a brd ff:ff:ff:ff:ff:ff 3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:a3:74:29 brd ff:ff:ff:ff:ff:ff 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500 link/ether 52:54:00:a3:74:29 brd ff:ff:ff:ff:ff:ff 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:1c:42:a5:57:7a brd ff:ff:ff:ff:ff:ff inet 10.211.55.4/24 brd 10.211.55.255 scope global eth0 inet6 fdb2:2c26:f4e4:0:21c:42ff:fea5:577a/64 scope global dynamic valid_lft 2591752sec preferred_lft 604552sec inet6 fe80::21c:42ff:fea5:577a/64 scope link valid_lft forever preferred_lft forever 3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 52:54:00:a3:74:29 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500 link/ether 52:54:00:a3:74:29 brd ff:ff:ff:ff:ff:ff
我想要将,其中的内容提取出来。
那么就需要 对 每一组字符串进行解析才可以。
最好的就是,使用 里面的 1 2 3 4 进行分割。将数据分割成8 个字符串。
但是单纯的 字符串的 split 方法, 并不能满足要求。 如果使用字符串的 split 方法。 可能就需要多次的去分割, 而且在不知道数据有多少的情况下, 也没法搞。
所有 使用 re 模块的 compile 和 split 就能很完美的解决这件事。
看数据能知道,每一组的开头都是 数字。 而且数字之前都是有换行的 。
所以如果要匹配这些换行怎么做呢?
re.findall(' d', out) # [' 2', ' 3', ' 4', ' 1', ' 2', ' 3', ' 4']
使用这些匹配出来的数据, 再去分割文件的话,就可以了。用的时候只需要:
li = re.compile(' ? d').split(filestr)
添加了 ? 万一有 也不会出问题。
然后就可以循环li 里面的每一条数据。