如何在Python中自动转义特殊字符但不包括字母字符?

3
我正在使用Python编写代码,其中包含特殊字符的Unicode文本,例如双引号和非英语字符。
我希望自动转义这些特殊字符,但是当我使用re.escape时,它也转义了所有的非英语字符。我不确定这是否应该发生。
无论如何,这是有问题的,因为当我的Python代码编写包含此Unicode文本的JavaScript代码时,JavaScript会打印出一个具有所有这些冗余斜杠的HTML元素。
我做错了什么?
这是生成的JS代码:
var myString='\ע\נ\ב\ר'

应该是这样的

var myString='ענבר'

更新: 我使用了json.dumps(...),但它会在前后添加额外的引号。有人知道如何去掉它吗?


1
re.escape就像其名称所述,用于对字符串进行转义,以便在正则表达式中作为字面值使用。这是完全不同的事情。 - user395760
3个回答

2
我使用了以下代码: json.dumps(myString, ensure_ascii=False) 到目前为止,效果不错。新添加的参数使其保留在Unicode格式。
(但是它会在具有Unicode字母字符的部分之前和之后添加额外的引号,因此我使用了 myString = myString[1:-1] 来去掉它们。这有点丑陋,也许有更好的解决方案……)

0
这完全取决于您想编码的实际特殊字符。`re.escape` 用于避免在正则表达式中具有特殊含义的字符 - 它不会真正关心其他内容。
也许 `urllib.quote` 更适合您的需求(然后在 JS 中使用类似于`decodeURI()`的东西)。或者可能...

0
你可以从 strunicode 派生出自己的字符串类,并重写它的 __str__() 方法,该方法在打印对象时被调用。在你的自定义方法中,你可以根据需要对字符进行任何转义处理。一种方法是调用基类方法,然后对其输出进行后处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接