Python 从表示列表的字符串创建列表
可能重复:Python 从表示列表的字符串创建列表,python,json,api,xmlrpcclient,Python,Json,Api,Xmlrpcclient,可能重复: 如何从该字符串中获取错误列表 >>> out = "<class 'api.exceptions.DataError'>:[u'Error 1', u'Another error']" 我得到一个例外: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/json/__init__
如何从该字符串中获取错误列表
>>> out = "<class 'api.exceptions.DataError'>:[u'Error 1', u'Another error']"
我得到一个例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/json/_init__.py”,第326行,加载
返回\u默认\u解码器。解码
文件“/usr/lib/python2.7/json/decoder.py”,第366行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
原始解码中的文件“/usr/lib/python2.7/json/decoder.py”,第384行
raise VALUERROR(“无法解码JSON对象”)
ValueError:无法解码任何JSON对象
你能建议一些方法来调整代码以得到我想要的吗
编辑:添加用例。
我的问题适用的背景是:
try:
# some code generating an xmlrpclib.Fault exception
pass
except xmlrpclib.Fault, err:
# here print dir(err) gives:
# ['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
# '__getattribute__', '__getitem__', '__getslice__', '__hash__', '__init__',
# '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
# '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__',
# '__unicode__', '__weakref__', 'args', 'faultCode', 'faultString', 'message']
exit(err.faultString)
# exits with: "<class 'api.exceptions.DataError'>:[u'Error 1', u'Another error']"
试试看:
#某些代码生成xmlrpclib.Fault异常
通过
除xmlrpclib.Fault外,错误:
#这里的打印目录(err)给出:
#[''类'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''',
#“\uuuu getattribute”、“\uuuu getitem”、“\uuuu getslice”、“\uuuu hash”、“\uuuu init”,
#"模","新","减少","减少","减少","增加","报告",,
#“\uuuuu setattr\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
#“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
退出(err.faultString)
#退出时显示::[u'错误1',u'另一个错误']
您应该使用:
import ast
ls="['a','b','c']"
ast.literal_eval(ls)
Out[178]: ['a', 'b', 'c']
或作为完整的:
In [195]: ast.literal_eval(out.split(':')[1])
Out[195]: [u'Error 1', u'Another error']
你应使用:
import ast
ls="['a','b','c']"
ast.literal_eval(ls)
Out[178]: ['a', 'b', 'c']
或作为完整的:
In [195]: ast.literal_eval(out.split(':')[1])
Out[195]: [u'Error 1', u'Another error']
看起来您试图打印一个异常;您可以使用
.args
参数访问异常的参数:
print exc.args[0]
看起来您试图打印一个异常;您可以使用
.args
参数访问异常的参数:
print exc.args[0]
为什么不访问包含该列表的异常的属性呢?我这样做了,但是对于xmlrpclib Fault对象的工作方式,我认为这是不可能的(或者是可能的,我只是不知道如何做)。为什么不访问包含该列表的异常的属性呢?我这样做了,但是对于xmlrpclib Fault对象的工作方式,我认为这是不可能的(或者是可能的,我只是不知道如何做)。在我的例子中,
exc.args
是一个空元组。@Gundalino:异常可能是忽略约定。执行print dir(exc)
来检测它有哪些属性,或者向我们显示真正的异常,而不是一个示例模块名。在我的例子中,exc.args
是一个空元组。@Guandalino:异常可能忽略了约定。执行print dir(exc)
以检测它确实具有哪些属性,或者向我们显示真正的异常,而不是一个示例模块名。