如何在Python中自动转义特殊字符但不转义字母?
我在用Python写代码,里面有一些特殊字符,比如双引号和非英语字符。
我想自动处理这些特殊字符,但当我使用re.escape时,它把所有非英语字符也处理了。我不太确定这样做是否正确。
这就有点麻烦,因为当我的Python代码生成包含这些unicode字符的JavaScript时,JavaScript会输出一个HTML元素,里面多了很多不必要的斜杠。
我哪里做错了呢?
这是生成的JavaScript代码:
var myString='\ע\נ\ב\ר'
它应该是
var myString='ענבר'
更新: 我用了json.dumps(...),但它在前后加了额外的引号。有没有人知道怎么去掉这些引号?
3 个回答
0
你可以从 str
或 unicode
这两个类创建自己的字符串类,并重写它的 __str__()
方法。这个方法在你打印这个对象的时候会被调用。在你自定义的方法里,你可以对字符进行任何你想要的处理,比如转义字符。一个实现方式是先调用父类的方法,然后对它的输出结果进行后续处理。
0
这完全取决于你想要编码的特殊字符是什么。re.escape
是用来处理在正则表达式中有特殊意义的字符的,它对其他的字符并不太在意。
也许 urllib.quote
更适合你的需求(然后可以在 JavaScript 中使用类似 decodeURI()
的方法)。或者可能
2
最后我用了这个:
json.dumps(myString, ensure_ascii=False)
到现在为止效果还不错。这个额外的参数让它保持了unicode格式。
(不过它会在包含unicode字母的部分前后加上额外的引号,所以我用了 myString = myString[1:-1]
。这样有点不太好看,也许还有更好的办法……)