【问题标题】:Write escape characters to file将转义字符写入文件
【发布时间】:2016-05-23 21:18:27
【问题描述】:

我需要在一个文件中写入一些文本,其中包含一些带有转义字符的字符串。

我的问题是,在打印文本时,隐含的特殊字符(如换行符或制表效果)必须保持其行为。

但包含特殊字符的文本将打印为简单文本。

我无法添加 \\,因为此文本是在运行时出现的,我不知道这些字符在哪里。

一个例子:

header = """

newLineSymbol = '\n'


newValueSeparator = '\t'
"""

在我的文件中我需要找到:

newLineSymbol = '\n'


newValueSeparator = '\t'

我试图以二进制的形式打开文件进行写入,但没有成功。

最后一次尝试使用 repr 函数编写文本,但它将我的文本打印为:

\n\nnewLineSymbol = '\n'\n\n\nnewValueSeparator = '\t'\n

我用这个来写:

fopen = open('output', 'w')
fopen.write(header)
fopen.close()

【问题讨论】:

  • 为什么不用json?
  • 因为这是一个静态文本,由工具填充了一些部分,我只能使用它和它的步骤。我只能将其生成的文本写入文件。
  • 好的,为什么不能用 '\\n' 替换 '\n' 呢? “运行时”是什么意思?
  • 该文本是由工具组成的,我保留它,我需要写入一个文件。因此,在该文本的某个位置,该工具使用了一种方法来填充文本。只有在工具生成文本之后我才能编写文本,所以我不知道它在哪里以及是否将一些特殊字符作为字符串放置。
  • 您目前使用什么代码将其打印到文件中?你能用它更新你的帖子吗?

标签: python string python-2.7 file-io escaping


【解决方案1】:

你想做的是不可能

请参阅this answer 了解原因。
引用答案:

在你输入 testStr = "\n" 后,特殊字符已经被 解释。所以在下一行你不能改变他们 解释,因为它已经发生了。这是在 词法分析阶段,所以甚至在代码实际出现之前 执行。当字符串被分配给你的变量时,这两个 字符“\”和“n”已经消失 - 只有一个字符 - 换行符。

简而言之,一旦声明了字符串,'\n' 和多行字符串中的实际<enter> 之间就没有区别了。

【讨论】:

    【解决方案2】:

    你可以尝试一些这样的字符串格式:

        header = """
    
        newLineSymbol = '%s%s'
    
    
        newValueSeparator = '%s%s'
        """ % ('\\', 'n', '\\','t')
    
        fopen = open('output.txt', 'w')
        fopen.write(header)
        fopen.close()
    

    在这个例子中使用占位符似乎很有效,但我不确定它与其他例子的效果如何。不过,希望这对其他一些想法有所帮助。

    【讨论】:

    • 我解决了使用 'r' 来定义长文本。而不是写 header = """.....\n\t""",我使用 header = r""".....\n\t"" "
    猜你喜欢
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多