我正在用python编写,我有一个包含特殊字符的unicode,例如双引号和非英文字符。
我想自动转义特殊字符,但是当我使用re.escape时,它也会逃避所有非英文字符。我不确定这应该发生。
无论如何这是有问题的,因为当我的python代码写入其中包含此unicode的javascript时,javascript会打印出一个包含所有这些冗余斜杠的HTML元素。
我做错了什么?
这是生成的JS代码:
var myString='\ע\נ\ב\ר'
应该是
var myString='ענבר'
更新: 我使用了json.dumps(...),但它在前后添加了额外的引号。任何人都知道如何删除它?
答案 0 :(得分:2)
结束使用:
json.dumps(myString, ensure_ascii=False)
到目前为止工作得很好。添加的参数将其保留为unicode。
(但它在具有unicode字母字符的部分之前和之后添加了额外的引号,所以我使用myString = myString[1:-1]
。这有点难看,也许有更好的解决方案......)
答案 1 :(得分:0)
这完全取决于您要编码的实际特殊字符。 re.escape
用于避免正则表达式中特殊的字符 - 它并不真正关心其他事物。
或许urllib.quote
更适合您的需求(然后在JS中使用类似decodeURI()
的内容)。或者可能
答案 2 :(得分:0)
您可以从str
或unicode
派生自己的字符串类,并覆盖其在打印对象时调用的__str__()
方法。在自定义方法中,您可以执行任何有关转义字符的操作。一种方法是调用基类方法,然后对其输出进行后处理。