2011-04-29 29 views
2

我正在用python編寫,並且我有一個包含特殊字符(如雙引號和非英文字符)的unicode。如何在python中自動轉義特殊字符但不是按字母順序轉義?

我想自動轉義特殊字符,但是當我使用re.escape時,它也會轉義所有非英文字符。我不確定這應該發生。

無論如何,這是有問題的,因爲當我的python代碼寫入JavaScript中有這個unicode的JavaScript時,javascript會打印一個包含所有這些冗餘斜槓的HTML元素。

我在做什麼錯?

這是導致JS代碼:

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

應該

var myString='ענבר' 

更新: 我用json.dumps(...),但它的前後增加了額外的報價。任何人都知道如何刪除?

+0

're.escape'是,如名稱所示,用於在正則表達式中轉義字符串以用作字面值。這是完全不同的東西。 – delnan 2011-04-29 18:34:33

回答

2

結束了使用此:

json.dumps(myString, ensure_ascii=False)

工作得很好至今。添加的參數將其留在unicode中。

(但之前和使用Unicode字母字符的部分後,增加了額外的報價,所以我用myString = myString[1:-1]。這是一個有點醜陋,也許有更好的解決方案...)

0

這一切都取決於你想編碼的實際特殊字符。 re.escape是爲了避免在正則表達式中特殊的字符 - 它並不真正關心其他的事情。

也許urllib.quote更適合您的需求(然後在JS中使用像decodeURI())。或可能

0

您可以從strunicode派生自己的字符串類並覆蓋它的__str__()方法,該方法在打印對象時被調用。在您的自定義方法中,您可以根據轉義字符進行任何操作。一種方法是調用基類方法,然後對其輸出進行後處理。