作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
结果示例:
{collisions=0, rx_bytes=258, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=3, tx_bytes=648, tx_dropped=0, tx_errors=0, tx_packets=8}
这种格式很像 JSON,但又不是 JSON。
有没有一种简单的方法可以将其解析为 map[string]int
?像 json.Unmarshal(data, &value)
。
最佳答案
如果传输格式不是递归定义的,即一个键不能启动一个子结构,那么它的语言是regular .因此,您可以使用 Go 的标准 regexp
包完美地解析它:
package main
import (
"fmt"
"regexp"
"strconv"
)
const data = `{collisions=0, rx_bytes=258, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=3, tx_bytes=648, tx_dropped=0, tx_errors=0, tx_packets=8}`
const regex = `([a-z_]+)=([0-9]+)`
func main() {
ms := regexp.MustCompile(regex).FindAllStringSubmatch(data, -1)
vs := make(map[string]int)
for _, m := range ms {
v, _ := strconv.Atoi(m[2])
vs[m[1]] = v
}
fmt.Printf("%#v\n", vs)
}
关于parsing - 如何解析 ovs-vsctl get interface <interface> statistics 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33099162/
如果我正在设置一个通过OpenFlow控制的交换设备,使用的条件是什么? ovs-dpctl 与 相比ovs-vsctl ? 的手册页ovs-dpctl 说使用 ovs-vsctl 如果 ovs-vs
结果示例: {collisions=0, rx_bytes=258, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_
我是一名优秀的程序员,十分优秀!