如何将字符串转换为字典以从中检索一个值?
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中将字符串转换为字典?