2011-04-29 5 views
2

저는 파이썬으로 글을 쓰고 있습니다. 이중 따옴표 나 영어 이외의 문자와 같은 특수 문자가 포함 된 유니 코드가 있습니다.파이썬에서 특수 문자를 자동으로 이스케이프 처리하지만 알파벳순으로 이스케이프 처리하지 않는 방법은 무엇입니까?

특수 문자를 자동으로 이스케이프하고 싶지만 re.escape를 사용하면 모든 영어 이외의 문자도 이스케이프 처리합니다. 그게 일어날 지 모르겠습니다.

어쨌든 이것은 내 파이썬 코드가이 유니 코드를 포함하는 자바 스크립트를 작성할 때 javascript가 이러한 모든 중복 슬래시가있는 HTML 요소를 인쇄하기 때문에 문제가됩니다.

내가 뭘 잘못하고 있니?

은 결과 JS 코드 :

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

그것은해야

var myString='ענבר' 

UPDATE : 나는 json.dumps (...)를 사용하지만 이전과 이후 추가 따옴표를 추가 . 누구든지 그것을 제거하는 방법을 알고 있습니까?

+0

're.escape'이며, 이름에서 알 수 있듯이 정규 표현식에서 리터럴로 사용하기 위해 문자열을 이스케이프 처리합니다. 그것은 완전히 다른 것입니다. – delnan

답변

2

:

json.dumps(myString, ensure_ascii=False)

작품 꽤 잘 지금까지. 추가 된 매개 변수는 유니 코드로 남습니다.

은 (그러나 이전과 유니 코드 알파벳 문자가 부품 후 추가 따옴표를 추가, 그래서 나는 myString = myString[1:-1]을 사용했다. 즉, 어쩌면 더 나은 솔루션이 조금 추한 ...)

0

모두 인코딩 할 실제 특수 문자에 따라 다릅니다. re.escape은 정규 표현식에서 특수 문자를 피하기위한 것입니다. 실제로 다른 것들은 신경 쓰지 않습니다.

아마도 urllib.quote이 귀하의 요구에 더 적합합니다 (JS에서는 decodeURI()과 같은 것을 사용하십시오). 또는 아마도

0

당신은 str 또는 unicode에서 자신의 문자열 클래스를 파생 개체를 인쇄 할 때 호출되는 그 __str__() 방법을 대체 할 수 있습니다. 사용자 지정 방법에서는 이스케이프 문자와 관련하여 원하는 모든 작업을 수행 할 수 있습니다. 이를 수행하는 한 가지 방법은 기본 클래스 메소드를 호출 한 다음 출력을 후 처리하는 것입니다. 이를 사용하여 종료

관련 문제