我的一个函数返回了在函数'def convert_st(self)'中声明的字符串'sumstr':
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'转换为字典并读取'Email'的值。 但是我收到错误消息:“在covert_st ValueError中:需要多个值才能解压缩”
答案 0 :(得分: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']
答案 1 :(得分:0)
您可以执行以下操作:
foo = 'Email: testmail@gmail.com ,Status: Connected, Logstate: On'
bar = dict(item.strip().split(': ') for item in foo.split(','))
print(bar['Email'])
请注意,您的字符串的逗号前后不一致,例如,
和,
。这就是为什么您还需要使用strip()的原因。如果它们一致,则可以相应地分割foo字符串。
答案 2 :(得分:0)
如果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()