3

行を次の形式のリストとして返すデータベースがあります。

data = ['(1000,"test value",0,0.00,0,0)', '(1001,"Another test value",0,0.00,0,0)']

その後json_str = json.dumps(data)、JSON 文字列を取得するために使用します。を適用するjson.dumps()と、次の出力が得られます。

json_str = ["(1000,\"test value\",0,0.00,0,0)", "(1001,\"Another test value\",0,0.00,0,0)"]

ただし、次の形式の JSON 文字列が必要です。

json_str = [(1000,\"test value\",0,0.00,0,0), (1001,\"Another test value\",0,0.00,0,0)]

基本的に、周囲の二重引用符を削除したいと思います。これを達成しようとしましたjson_str = json_str.strip('"')が、うまくいきません。次に、試してみjson_str = json_str.replace('"', '')ましたが、これによりエスケープされた引用符も削除されます。

誰かがこれを達成する方法を知っていますか、またはPythonに似た関数がありjson.dumps()、同じ結果を生成しますが、周囲の二重引用符はありませんか?

4

1 に答える 1

1

文字列のリストをダンプしているので、 json.dumps はまさにあなたが求めていることを行います。あなたの問題に対するかなり醜い解決策は、以下のようなものかもしれません。

def split_and_convert(s):
    bits = s[1:-1].split(',')
    return (
        int(bits[0]), bits[1], float(bits[2]),
        float(bits[3]), float(bits[4]), float(bits[5])
    )

data_to_dump = [split_and_convert(s) for s in data]
json.dumps(data_to_dump)
于 2013-09-06T00:56:44.753 に答える