1

この弦はどうやって回すの?

"((145541L, u'/.stats/'), (175706L, u'///')"

次のようなPythonのjsonオブジェクトに

{'145541' : '/.stats/',
 '175706' : '///'
 }

Tuple() などを試してきましたが、そうです

ありがとう

4

2 に答える 2

7

クイックフィックス:

>>> 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しかし、代わりに 実際に調べてみてください。

于 2013-01-24T01:15:42.807 に答える
0

おそらく、タプルのタプルがあり、辞書を作成したいでしょう。これを行うには、次のことを試してください。

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))
于 2013-01-24T01:13:18.503 に答える