7

JSON エンベロープでブラウザーに送信する JavaScript を作成する Python スクリプトがあります。JavaScript 文字列をエスケープし、一重引用符で区切りたいと思います。json.dumpsJSON仕様で必要な区切り文字としてダブルクォーテーションを使っているので使えません。

PythonにJavaScript文字列エスケープメソッドはありますか?

def logIt(self, str):
    #todo: need to escape str here
    cmd = "console.log('%(text)s');" % { 'text': str}
    json.dumps({ "script": cmd })

したがってlogIt('example text')、次のようなものが返されます。

{
  "script": "console.log('example text');"
}
4

1 に答える 1

11

json.dumpsそのエスケープ関数です。任意の値を取り、有効な JavaScript リテラルにします。

def logIt(self, str):
    cmd = "console.log({0});".format(json.dumps(str))
    json.dumps({ "script": cmd })

生産:

>>> print logIt('example text')
{ "script": "console.log(\"example text\");" }
>>> print logIt('example "quoted" text')
{ "script": "console.log(\"example \\\"quoted\\\" text\");" }

または:

import string
import json
import functools

quote_swap = functools.partial(
    string.translate, table=string.maketrans('\'"', '"\'')
)

def encode_single_quoted_js_string(s):
    return quote_swap(json.dumps(quote_swap(s)))
于 2013-06-14T23:33:07.720 に答える