Python: 'backslash double quote'文字列をファイルに書き込む

2017-04-07 14 views
2

私は入力ファイルに二重引用符が含まれているので、PythonでCスタイルのヘッダファイルを生成したいと思っています。Python: 'backslash double quote'文字列をファイルに書き込む

セイ、

input file: Hello "Bob" 
output file: Hello \"Bob\" 

私は、このようなファイルを取得するコードを記述することはできませんが、ここで私がこれまで試したものです:

key = 'key' 
val = 'Hello "Bob"' 
buf_list = list() 
... 
val = val.replace('"', b'\x5c\x22') 
# also tried: val = val.replace('"', r'\"') 
# also tried: val = val.replace('"', '\\"') 
buf_list.append((key + '="' + val + '";\n').encode('utf-8')) 
... 
for keyval in buf_list: 
    lang_file.write(keyval) 
lang_file.close() 

出力ファイルが常に含まれています:

Hello \\\"Bob\\\" 

\n\tの文字列を出力ファイルに書き込む際に問題はありませんでした。

私はゼロまたは2つのバックスラッシュを書くことができるようだ、誰かが助けてくれる?

答えて

0

交換中に文字列を生の文字列に変換する必要があります。

a='Hello "Bob"' 
print a.replace('"', r'\"') 

上記のあなたを与えるだろう。 Hello \"Bob\"

+0

すでにこれを試しました。私のコードを見てください。 これは 'print'関数では機能しますが、ファイルに書き込むときには機能しません。 – maestun

+0

@maestun - 私の側でうまく動作します。 –

+0

これを試してください: 'key = 'key'; val = 'Hello' Bob ''; buf_list = list(); val = val.replace( '"'、r '\"'); h = open( 'temp.txt'、 'w'); h.write(val); h.close(); ' –

1

あなたは二重引用符やバックスラッシュの両方をエスケープする必要があります。以下は私のために働いています(Python 2.7を使用):

with open('temp.txt', 'r') as f: 
    data = f.read() 

with open('temp2.txt', 'w') as g: 
    g.write(data.replace('\"', '\\\"')) 
+0

ありがとう、これは動作します。しかし、ファイルに書き込まなければならない文字列の種類は、 'key =" value = \ quotes \ "" ' とよく似ていて、コードは明らかに次のようになります: ' key = \ "value with \ quotes \" \ "' ...ほとんどのところ:) – maestun

+0

@maestun変更したい見積もりから変更したくない見積もりを切り離すために何らかの前処理をする必要があります。 – asongtoruin

+0

はい、私は、ありがとう! – maestun

関連する問題