我的函数“getint”返回以下值:
响应:0 id:70402类型:1具有值int值:15
我已将上述值存储在String中,并在代码下面写入以打印'int value'数据15。
码:
s= '''response: 0
id: 70402
type: 1
has value
int value: 15
'''
s=s.replace("has","has:")
s = s.strip()
print s
d = {}
for i in s.split('\n'):
try:
key, val = i.split(":")
d[key.strip()] = val.strip()
print d['int value']
except ValueError:
print "no key:value pair found in", i
在输出获得KeyError:'int value'
。
输出:
response: 0 id: 70402 type: 1 has: value int value: 15 Traceback (most recent call last): File "/home/tests/test_lang.py", line 18, in <module> print d['int value'] KeyError: 'int value'
您的代码存在一些问题。试试下面的内容。
for i in s.split('\n'):
key, val = i.split(":")
d[key.strip()] = val.strip()
try:
print(d['int value'])
except KeyError:
print("no 'int value' found in", d)
说明
KeyError
来捕获关键错误。try
/ except
。你的错误,因为当你通过s tring
。你的第一个i: response = 0
,但你print d['int value']
当时没有d
。这将有效:
s= '''response: 0
id: 70402
type: 1
has value
int value: 15
'''
s=s.replace("has","has:")
s = s.strip()
print s
d = {}
for i in s.split('\n'):
try:
key, val = i.split(":")
d[key.strip()] = val.strip()
except ValueError:
print "no key:value pair found in", i
print d['int value']
如果您想使用密钥获取错误。你应该添加:
except KeyError:
print "key error found in", i
或者只是将ValueError
改为KeyError
写print d['int value']
一边循环
s= '''response: 0
id: 70402
type: 1
has value
int value: 15
'''
s=s.replace("has","has:")
s = s.strip()
print s
d = {}
for i in s.split('\n'):
try:
key, val = i.split(":")
d[key.strip()] = val.strip()
except ValueError:
print "no key:value pair found in", i
print d['int value']