代码之家  ›  专栏  ›  技术社区  ›  rodee

python中key=value格式字节字符串的解析

  •  1
  • rodee  · 技术社区  · 6 年前
    from subprocess import PIPE,run
    ....
    ....
    log=run([myCmd,cwd='/my/dir',stdout=PIPE,stderr=PIPE)
    

    现在 log 值如下:

    b'owner=mike\ntitle=clean\nmiles=120k\nlocation=tx\n'
    

    什么是解析和获取我感兴趣的值的最佳方法,例如,我喜欢获取 miles 那就是 120k . 我用蟒蛇3

    2 回复  |  直到 6 年前
        1
  •  0
  •   DeepSpace    6 年前

    解码它,然后滥用这个事实 dict 接受iterable:

    string = b'owner=mike\ntitle=clean\nmiles=120k\nlocation=tx\n'
    string = string.decode()
    print(dict(key_value.split('=') for key_value in string.split('\n') if key_value))
    # {'owner': 'mike', 'title': 'clean', 'miles': '120k', 'location': 'tx'}
    

    从这里到任意值的方法与访问字典键一样简单:

    d = dict(key_value.split('=') for key_value in string.split('\n') if key_value)
    print(d['miles'])
    # 120k
    
        2
  •  0
  •   GraphicalDot    6 年前

    干得好,

     _dict = {}
     f = b'owner=mike\ntitle=clean\nmiles=120k\nlocation=tx\n'
    [_dict.update({e.split("=")[0]: e.split("=")[1]} ) for e in f.decode().split("\n") if e]
    

    为了英里的价值,你可以

    _dict["miles"]