2015-10-13 79 views
-3

這可能是一個簡單的修復,但有一點麻煩讓我的頭周圍;我在讀從不同的臺詞,並希望更換具有可變一條線,但它與box1而不是值55, 55.7str.replace與變量

box1 = 55, 55.7 
box2 = -9, -7 

with open('parttest', 'r') as file : 
    filedata = file.read() 

filedata = filedata.replace('box_lat', 'box1') 
filedata = filedata.replace('box_lon', 'box2') 

with open('buildtest', 'w') as file: 
    file.write(filedata) 
+2

內(單人或雙人)任何引用是一個字符串在Python – sam

+0

@ sam2090或三重或六重引號! ''「」這些也是「」「'''和這些!」 –

+0

@AdamSmith是的。多行字符串,以防未來的讀者不知道它們叫做什麼 – sam

回答

2

您當前正在用變量的文字名稱替換那些值。如果您希望它使用這些變量名稱引用的值,請省略引號。

接下來,您必須將這些變量轉換爲字符串,因爲我懷疑您之所以使用引號的原因是因爲您在沒有它們的情況下出現了錯誤。這是因爲replace只接受字符串,而您的變量爲tuple s。要解決此問題,請將該變量轉換爲字符串。

filedata = filedata.replace('box_lat', str(box1)) 

如果你不想讓出現在一個tuple的字符串表示括號,你可以帶他們關:

filedata = filedata.replace('box_lat', str(box1).strip('()')) 
+0

'str(box1)'將會給出一個元組的字符串表示而不是'55,55.7' –

+0

@PadraicCunningham - 如果括號是不需要的,我們可以使用'str (BOX1).strip( '()')'。 – TigerhawkT3

+0

'「{},{}」。format(* box1)' –

2

如果你想與變量BOX1的值來代替它替換你需要刪除它周圍的引號。請嘗試:

box1 = "55, 55.7" 
box2 = "-9, -7" 
filedata = filedata.replace('box_lat', box1) 
filedata = filedata.replace('box_lon', box2) 

引用將替換爲所附文本;而變量名不應該用引號引起來。