【问题标题】:python adds "\" to '""' in read() [duplicate]python在read()中将“\”添加到'“”' [重复]
【发布时间】:2016-03-15 15:22:53
【问题描述】:

我在一个文件中有以下文本:

{"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\"]]}}

注意它是如何将\ 添加到每个" 字符的。我该如何避免这种情况以及为什么要这样做?

【问题讨论】:

  • 您如何查看这些斜线?它们可能不会“真正”存在,因为它们会在那里转义引号,以便它们可以在其他引号内
  • 另外,看起来您正在阅读json,为什么不使用json 模块而不是将其视为字符串?
  • @EricRenouf 这是来自一个文本文件,所以可以是任何东西(现在是 json 格式),我在一个文件中查看它,我通过以下方式将它写入:lc_arguments['user_data_script'] = user_data_script
  • 好的,我认为它们并不真正存在,它们只是以这种方式打印以使字符串中的引号不会终止字符串。不过,您实际上并没有向我们展示任何产生输出的行,所以目前这仍然是我的猜测。
  • @Scooby 你说的“出来”是什么意思?请提供您的问题的Minimal, Complete, and Verifiable Example

标签: python bash python-2.7 python-3.x


【解决方案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"]]}}

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 2018-08-11
    • 2021-02-19
    • 2013-03-02
    • 1970-01-01
    • 2021-12-30
    • 2017-04-16
    • 2023-02-10
    相关资源
    最近更新 更多