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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将字符串转换为字典以从中检索一个值?相关的知识,希望对你有一定的参考价值。

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

def covert_st(self):
    sumstr= 'Email: testmail@gmail.com ,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个值来解包”

答案

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

def covert_st():
    sumstr= 'Email: testmail@gmail.com ,Status: Connected, Logstate: On'
    sumstr = sumstr.split(',')
    dd ={}
    for st in sumstr:
        key,value=st.split(':')
        dd[key] = value
    print dd
    print dd['Email']
另一答案

你可以这样做:

foo = 'Email: testmail@gmail.com ,Status: Connected, Logstate: On'
bar = dict(item.strip().split(': ') for item in foo.split(','))
print(bar['Email'])

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

另一答案

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

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

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

sumstr= 'Email: testmail@gmail.com ,Status: Connected, Logstate: On'
elements = sumstr.split(",")
email = elements[0].split(":")[1].strip()

以上是关于如何将字符串转换为字典以从中检索一个值?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字典中的字符串值转换为 int/float 数据类型?

如何将afnetworking json字典转换为字符串,然后在IOS中将字符串转换为字典?

如何将字典元组转换为有组织的数据框?

使 ASP.NET WCF 将字典转换为 JSON,省略“键”和“值”标签

如何使用列表和字典将字符串转换为二进制代码

Pandas:如何将具有重复索引值的数据框转换为字典