2012-04-19 11 views
1

タイトルはすべてです。私は以下のコードを持っています。行9と行18は上記の文字を含んでいます。 chr(92)を使わない方法がありますか?text_widget.insert(1.0、 "\")はスラッシュを1つだけ表示します

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

\文字をエスケープしてみ、それぞれの時間は、あなたがこのような2 \書き、本文中\必要があります。

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

またはraw strings

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

最初の方法では3つのスラッシュ( '///')でエラーが発生しましたが、2番目の方法は完全に機能しました。 rが実際に何をしているのか説明できますか?エスケープとは何ですか? –

+1

最初の方法は、\が必要なたびに_two_と書いてください。だから\\\は失敗するでしょうが\\\\はうまくいくでしょう。 2番目の方法では、 'r'''文字列は[生の文字列](http://docs.python.org/reference/lexical_analysis.html#string-literals)と呼ばれ、バックスラッシュのエスケープシーケンスを解釈するための異なる規則を使用します。 –

+2

文字列には特別な意味を持つ文字がいくつかあります(例: '' \ ''、文字列の終わりを指定する '\ n'、' \ t' ...または '' 'エスケープとは、この文字を文字列(この文字で抽象的な役割ではない)で使用することを指します。これはPython(他の多くの言語と同様に)で '' \ ' \ "Hello!\"。 "'、またはあなたの場合 '" \\ "' – FabienAndre