7

我有一个 Python 脚本,它构建了一些 JavaScript,以 JSON 信封的形式发送到浏览器。我想转义 JavaScript 字符串并用单引号分隔它们。我不能使用json.dumps,因为它使用双引号作为 JSON 规范要求的分隔符。

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 回答