在Python 3.6.8中使用原始转义字符将字符串写入文件

在Python 3.6.8中使用原始转义字符将字符串写入文件,python,python-3.x,Python,Python 3.x,我正在尝试使用内置的write函数在Python3.6.8中将字符串写入磁盘。问题是,我试图编写的字符串中包含了我需要维护的转义字符。ie我希望字符串“hello\n\tworld”在写入磁盘时为“hello\n\tworld”,而不是: 示例代码: 输出: 唯一有效的方法是用双反斜杠替换反斜杠,但是我在代码中很难做到这一点,string.replace在我尝试过的任何方式中都不起作用。使用before each string文本: example_text = r''' hello world

我正在尝试使用内置的write函数在Python3.6.8中将字符串写入磁盘。问题是,我试图编写的字符串中包含了我需要维护的转义字符。ie我希望字符串“hello\n\tworld”在写入磁盘时为“hello\n\tworld”,而不是:

示例代码:

输出:

唯一有效的方法是用双反斜杠替换反斜杠,但是我在代码中很难做到这一点,string.replace在我尝试过的任何方式中都不起作用。

使用before each string文本:

example_text = r'''
hello
world
hello\n\tworld
'''

with open('example.txt', 'w') as example_file:
    example_file.write(example_text)
    example_file.close()

这与您的问题没有直接关系,但是:您不必调用
example\u file.close()
,因为
with
语句将为您关闭文件。这是首先对文件使用
with
语句的主要原因。这里缺少的基本思想是字符串中不存在转义字符。它们在源代码中用于表示某些字符,如换行符,或在字符串对象的打印表示中使用。注意,字符串文字
'\n'
是长度正好为1而不是2的字符串,其中包含换行符,而不是反斜杠和n。这就是为什么
.replace
不起作用,因为字符串中没有反斜杠。字符串的来源是什么?您只是在源代码中编写它们吗?他们为什么要保留逃跑序列?@juanpa.arrivillaga谢谢你的见解!这有助于我考虑其他问题可能发生的来源,我能够解决问题。我从上游的GET请求获取字符串,并且能够确认它是一个字符串文本。在更下游的地方,我使用re.sub函数替换了较大主体中的字符串,这导致了问题。我之所以需要维护转义序列,是因为最终输出是一些动态生成的代码。@Kevin,谢谢!很高兴知道,我对Python还是有点陌生。谢谢!这修复了我的示例,不幸的是,问题发生在更上游,字符串存储在变量中,因此问题没有得到解决。经过进一步调查,似乎是使用正则表达式函数re.sub导致原始转义字符发生变化。我改为使用字符串的replace函数,结果成功:-)
example_text = '''
hello
world
hello\n\tworld
'''

with open('example.txt', 'w') as example_file:
    example_file.write(example_text)
    example_file.close()

hello
world
hello
    world

example_text = r'''
hello
world
hello\n\tworld
'''

with open('example.txt', 'w') as example_file:
    example_file.write(example_text)
    example_file.close()