2012-04-19 2 views
1

제목에 모두 표시됩니다. 나는 다음과 같은 코드를 가지고있다. 9 번과 18 번 줄은 그 문자들을 포함하고있다. chr (92)를 사용하지 않고 방법이 있습니까?text_widget.insert (1.0, "\")는 슬래시가 하나만 표시됩니다.

def Conversion(self): 
    self.t=self.input.Read() 
    self.columns=1  
    for i in range(len(self.t)): 
     if self.t[i]==chr(9): 
      self.columns+=1 
     elif self.t[i]==chr(10): 
      break    
    self.c="\begin{tabular} ["  
    self.c+="c"*self.columns 
    self.c+="] \n" 
    for i in range(len(self.t)): 
     #self.c+=str(ord(self.t[i])) 
     #self.c+=" " 
     if self.t[i]==chr(9): 
      self.c+='&' 
     elif self.t[i]==chr(10): 
      self.c+='\\' 
      self.c+="\n" 
     else: 
      self.c+=self.t[i] 
    self.c+="\end{tabular}" 
    self.output.Write(self.c) 

또한 내에 .write 방법은 다음과 같습니다

class Output: 
def __init__(self,master,x): 
    self.v=Text(master,width=x) 
    self.v.pack(side=RIGHT) 
    self.v.insert(1.0,"LaTeX code") 
def Write (self,input): 
    self.input=input 
    if self.v.get(1.0,END)=="": 
     self.v.insert(1.0,self.input) 
    else: 
     self.v.delete(1.0,END) 
     self.v.insert(1.0,self.input) 

답변

4

\ 문자를 탈출 시도 때마다이 같은 두 \ 쓰기 텍스트에서 \ 필요

self.c='\\begin{tabular} [' 

또는 raw strings :

self.c=r'\begin{tabular} [' 
+0

첫 번째 방법은 세 개의 슬래시 ('///')로 오류를 나타내지 만 두 번째 방법은 완벽하게 작동합니다. r이 실제로하는 일을 설명 할 수 있습니까? 탈출은 무엇입니까? –

+1

첫 번째 방법은 \가 필요할 때마다 _two_를 씁니다. 그래서 \\\는 실패하지만 \\\\는 작동합니다. 두 번째 방법의 경우 'r' '문자열은 [원시 문자열] (http://docs.python.org/reference/lexical_analysis.html#string-literals)이라고하며 백 슬래시 이스케이프 시퀀스를 해석하는 데 다른 규칙을 사용합니다 –

+2

문자열에 특별한 의미를 갖는 문자가 있습니다 (예 :''\'': 보이지 않는 문자를 쓰는 데 사용됩니다 :'\ n','\ t' 또는''' 이스케이프 (escaping)는이 문자를 문자열 (이 문자가 아닌 추상적 인 역할)에 사용하는 것을 말합니다. 파이썬에서 (다른 많은 언어와 마찬가지로) 앞뒤에''\ ''를 추가하여 완성됩니다. " \ "Hello! \". "', 또는 귀하의 경우'"\\ "' – FabienAndre