2017-01-25 16 views
0

ソースコード:pythonキーワードを含むファイルに行テキストを書き込む?

table_start_value="\begin{table}[ht] \n\begin{center} \n\begin{tabular}{|p{2cm}|p{7cm}|p{2cm}|} \n\hline \n\multicolumn{1}{|c|}{\textbf{ID}} \& {\textbf{Title:}} & \multicolumn{1}{c|}{\textbf{Priority}}\\ \n\hline\n" 

def write_line(inf): 
    with open(inf,'w') as fwri: 
      fwri.writelines(table_start_value) 

file_src="foo.txt" 
write_line(file_src) 

問題: はなぜbluryテキストがfoo.txtのファイルに表示され、私は、ファイル内の正確なテキストを書くことができますか?

enter image description here 予想される出力:

\begin{table}[ht] 
\begin{center} 
\begin{tabular}{|p{2cm}|p{7cm}|p{2cm}|} 
\hline 
\multicolumn{1}{|c|}{\textbf{ID}} & {\textbf{Title:}} & \multicolumn{1}{c|}{\textbf{Priority}}\\ 
\hline 

enter image description here

ご提案いただきありがとうございます!

+2

ぼんやりしたテキストが表示されている場合は、投稿したコードとはまったく関係ありません。ディスプレイの設定を確認してください。 – user2357112

+0

@ user2357112これは表示設定で問題にはなりません。私は2つのイメージを添付して、あなたはその違いを見ることができます – J4cK

+0

行は "\ b"で始まり、バックスペースとして解釈されています。 "\ n"のように改行があります。スラッシュが必要な場合は、最初の "\"を "\\"としてエスケープする必要があります。または、すべてを脱出する必要があります。 "\ t"もタブに変わります。全体を生の文字列として扱う。 – RobertB

答えて

3

\ttabを意味するので、\\tを使用する必要があります。 \n\r\bなどの特殊文字があります。ファイルに正確なテキストがある場合は、\\にこの文字を使用する必要があります。

また、しかし、トリプル"""とし、\nなしr接頭辞を使用することができ、その後、あなたは、問題は、文字列のラインtable_start_valueである\\

table_start_value = r"""\begin{table}[ht] 
\begin{center} 
\begin{tabular}{|p{2cm}|p{7cm}|p{2cm}|} 
\hline 
\multicolumn{1}{|c|}{\textbf{ID}} & {\textbf{Title:}} & \multicolumn{1}{c|}{\textbf{Priority}}\\ 
\hline 
""" 

def write_line(inf): 
    with open(inf,'w') as fwri: 
      fwri.writelines(table_start_value) 

file_src="foo.txt" 
write_line(file_src) 
1

を使用する必要はありません。あなたは、次のように記述する必要があります

table_start_value="\\begin{table}[ht] \n\\begin{center} \n\\begin{tabular}{|p{2cm}|p{7cm}|p{2cm}|} \n\\hline \n\\multicolumn{1}{|c|}{\\textbf{ID}} & {\\textbf{Title:}} & \\multicolumn{1}{c|}{\\textbf{Priority}}\\\\ \n\\hline\n" 

すなわち、すべてのラテックスコマンドに「\」を追加します。

+0

はい。 '\\ b'でなく '\\\ b'でなければなりません。 – RobertB

+0

ええ、いくつかのコピーの貼り付けは....今はうまくいくはずです – fedepad

1

\で始まる多くの文字の組み合わせは、Pythonでは特殊です。出力ファイルをunmangleするために、これを行います。

with open(inf,'w') as fwri: 
    replaced_string = table_start_value.replace("\b", "\\b").replace("\t", "\\t") 
    fwri.writelines(replaced_string) 
1

あなたの問題は、バックスラッシュ文字である:\

バックスラッシュ(ほとんど)は、その文字の意味を変更して、直後に来る次の文字に常に影響します。文字列\nを使用し、リテラルのバックスラッシュとそれに続くリテラル "n"が表示されない場合は、これを見ることができます。代わりに改行が表示されます。これは、バックスラッシュが "n"の意味を変更して改行になるためです。しかし、このように影響を受けるのは "n"だけではありません。あなたは文字通り、あなたが必要と表示したいあなたの文字列内のすべてのバックスラッシュについてmy_string = "Here's a SINGLE backslash: \\"

:あなたは文字列内のバックスラッシュを保存したい場合は

は、あなたがそうのように、バックスラッシュバックスラッシュに必要バックスラッシュをバックスラッシュします。

1

生の文字列を使用するようにコードを変更します。

table_start_value= r"\begin{tab.. 
+1

改行ではなく '\ n'として書かれるので、' \ n'に問題があります。 – furas

関連する問題