如何将字符串转换为字典以从中检索一个值?

问题描述 投票:0回答:3

我的一个函数返回字符串'sumstr',如下面函数'def convert_st(self)'中所声明的:

def covert_st(self):
    sumstr= 'Email: [email protected] ,Status: Connected, Logstate: On'
    dd ={}
    for st in sumstr:
        key,value=st.split(',')
        dd[key] = value
    print dd
    print dd['Email']

我试图将字符串'sumstr'转换为字典并读取'电子邮件'的值。但我得到错误:“in covert_st ValueError:需要多于1个值来解包”

python-2.7 dictionary
3个回答
1
投票

您试图将3个值分配给2个值,这就是问题,首先需要拆分,然后按:首先分离键,最后分离键值。

def covert_st():
    sumstr= 'Email: [email protected] ,Status: Connected, Logstate: On'
    sumstr = sumstr.split(',')
    dd ={}
    for st in sumstr:
        key,value=st.split(':')
        dd[key] = value
    print dd
    print dd['Email']

0
投票

你可以这样做:

foo = 'Email: [email protected] ,Status: Connected, Logstate: On'
bar = dict(item.strip().split(': ') for item in foo.split(','))
print(bar['Email'])

请注意,您的字符串具有不一致的逗号,例如,,。这就是你需要使用strip()的原因。如果它们一致,则可以相应地拆分foo字符串。


0
投票

如果sumstr可以是json,那么你可以像这样轻松地解析它:

import json
sumstr= '{Email: [email protected] ,Status: Connected, Logstate: On}'
data = json.loads(sumstr)
email = data["Email"]

如果sumstr不能被json格式化,那么你可以像这样解析它:

sumstr= 'Email: [email protected] ,Status: Connected, Logstate: On'
elements = sumstr.split(",")
email = elements[0].split(":")[1].strip()
© www.soinside.com 2019 - 2024. All rights reserved.