如何自动转义python中的特殊字符而不是字母字符?

时间:2011-04-29 18:30:27

标签: javascript python

我正在用python编写,我有一个包含特殊字符的unicode,例如双引号和非英文字符。

我想自动转义特殊字符,但是当我使用re.escape时,它也会逃避所有非英文字符。我不确定这应该发生。

无论如何这是有问题的,因为当我的python代码写入其中包含此unicode的javascript时,javascript会打印出一个包含所有这些冗余斜杠的HTML元素。

我做错了什么?

这是生成的JS代码:

var myString='\ע\נ\ב\ר'

应该是

var myString='ענבר'

更新: 我使用了json.dumps(...),但它在前后添加了额外的引号。任何人都知道如何删除它?

3 个答案:

答案 0 :(得分:2)

结束使用:

json.dumps(myString, ensure_ascii=False)

到目前为止工作得很好。添加的参数将其保留为unicode。

(但它在具有unicode字母字符的部分之前和之后添加了额外的引号,所以我使用myString = myString[1:-1]。这有点难看,也许有更好的解决方案......)

答案 1 :(得分:0)

这完全取决于您要编码的实际特殊字符。 re.escape用于避免正则表达式中特殊的字符 - 它并不真正关心其他事物。

或许urllib.quote更适合您的需求(然后在JS中使用类似decodeURI()的内容)。或者可能

答案 2 :(得分:0)

您可以从strunicode派生自己的字符串类,并覆盖其在打印对象时调用的__str__()方法。在自定义方法中,您可以执行任何有关转义字符的操作。一种方法是调用基类方法,然后对其输出进行后处理。