2016-03-15 42 views
-1

我已經在一個文件下面的文本閱讀():蟒蛇將「」,以「‘’」在

{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash -ex","\n","echo 'Region name is:'",{"Ref":"AWS::Region"},">>~/user-data.log","\n"]]}} 

我從文件中讀取,並將其寫入文件,如:

with open(user_data['file'], "r") as f: 
       user_data_script = f.read().splitlines() 
lc_arguments['user_data_script'] = user_data_script 

但這出來的:

{\"Fn::Base64\":{\"Fn::Join\":[\"\",[\"#!/bin/bash -ex\",\"\\n\",\"echo 'Region name is:'\",**{\"Ref\":\"AWS::Region\"}**,\">>~/user-data.log\",\"\\n\"]]}} 

注意它是如何增加\每個"字符。我如何避免這種情況,爲什麼這樣做?

+0

你是如何查看它看到這些斜槓?他們可能不會「真的」在那裏,因爲那些會在那裏逃避引號,所以他們可以在其他引號裏 –

+0

另外,這看起來像你在'json'中閱讀,爲什麼不使用[json](https:/ /docs.python.org/2/library/json.html)模塊,而不是像一個字符串對待它? –

+0

@EricRenouf這是從一個文本文件,所以可能是任何東西(現在是在JSON格式),我正在查看它在一個文件,我寫它通過:lc_arguments ['user_data_script'] = user_data_script – Scooby

回答

1

當使用.splitline()方法時,您會得到一個列表,並且您可能會將整個列表寫入文件(這會導致問題)。

嘗試這樣做,而不是(爲我工作):

with open(r'C:\Users\USER\PycharmProjects\untitled\abcd.txt', "r") as f: #in this file i putted your string 
    user_data_script = f.read().splitlines() 
with open('abcde.txt','w') as f2: 
    f2.write(user_data_script[0]) #write the first line and *not* the entire list. 

什麼是abcde.txt所著是:

{"Fn::Base64":{"Fn::Join":["",["#!/bin/bash -ex","\n","echo 'Region name is:'",{"Ref":"AWS::Region"},">>~/user-data.log","\n"]]}} 

希望這可以幫助您!