2017-04-07 60 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串到輸出文件。

看來我只能寫零或兩個反斜槓,有人可以幫忙嗎?

回答

0

更換期間應將字符串轉換爲原始字符串。

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

上述會給你: Hello \"Bob\"

+0

已經嘗試過,請參閱我的代碼。 這將與「打印」功能一起使用,但不能在寫入文件時使用。 – maestun

+0

@maestun - 在我身邊正常工作。 –

+0

試試這個:'key ='key'; val ='你好'鮑勃''; 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 with \ quotes \」「' 而且您的代碼顯然會產生: 'key = \」value with \ quotes \「\ 「' ...幾乎在那裏:) – maestun

+0

@maestun你需要做一些預處理來分隔你不想從你想改變的引號改變的引號。 – asongtoruin

+0

是的,我會那樣做,謝謝! – maestun