0

重複の可能性:
ネストされたリストを表す文字列を実際のリストに解析するにはどうすればよいですか?

この文字列からエラーのリストを取得するにはどうすればよいですか?

>>> out = "<class 'api.exceptions.DataError'>:[u'Error 1', u'Another error']"

json モジュールを使用してみましたが、うまくいきませんでした。

>>> import json
>>> errors = out.split(":")[-1]
>>> my_list = json.loads(errors)

私はこの例外を受け取ります:

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

私が望むものを得るためにコードを調整する方法を提案してください。

編集:ユースケースを追加しました。

私の質問が適用されるコンテキストは次のとおりです。

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']"
4

2 に答える 2

4

以下を使用する必要があります。

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']
于 2012-10-14T19:38:07.063 に答える
1

例外を出力しようとしたようです。次のパラメーターを使用して、例外の引数にアクセスできます。.args

print exc.args[0]
于 2012-10-14T19:43:58.747 に答える