この弦はどうやって回すの?
"((145541L, u'/.stats/'), (175706L, u'///')"
次のようなPythonのjsonオブジェクトに
{'145541' : '/.stats/',
'175706' : '///'
}
Tuple() などを試してきましたが、そうです
ありがとう
クイックフィックス:
>>> import ast
>>> s = "((145541L, u'/.stats/'), (175706L, u'///')"
>>> {str(k): v for (k, v) in ast.literal_eval(s + ')')}
{'175706': u'///', '145541': u'/.stats/'}
json.loads
しかし、代わりに 実際に調べてみてください。
おそらく、タプルのタプルがあり、辞書を作成したいでしょう。これを行うには、次のことを試してください。
data = ((145541L, u'/.stats/'), (175706L, u'///'))
result = dict(data)
あなたが持っているものが本当に文字列である場合は、最初の行を追加します。
data = "((145541L, u'/.stats/'), (175706L, u'///'))"
data = eval(data)
result = dict(data)
@Volatility で指摘されているように、リテラルだけでなく任意のコードをeval
評価するため、危険な場合があります。このようにして、文字列でコマンドを受け取った場合、誰かがプログラムでコマンドを実行できます。
これを回避するには、ast.literal_eval
代わりに次を使用できます。
from ast import literal_eval
data = "((145541L, u'/.stats/'), (175706L, u'///'))"
result = dict(literal_eval(data))