将转义字符写入文件以使该字符可见

PDi*_*lta 7 python escaping python-3.x

我想将“\t”写入文件。不是“制表符”,而是字面上的“\t”。我该怎么做呢?这已经让我发疯了一个多小时了;我尝试的所有操作都会产生一个实际的“制表符”(空白)。

我为什么想要这个?因为我正在使用 ConfigParser() 生成一个配置文件,其中还包含一些分隔符,并且我希望该文件是人类可读的。我不认为空白是可读的。

编辑:抱歉,问题不清楚:我想对包含字符串的变量执行此操作。所以写“\\t”不是一个选择。我必须将包含转义字符的变量的值写入文件,其方式在思想上等同于:

v = "\t"
write(v)
Run Code Online (Sandbox Code Playgroud)

不改变定义的情况v下(尽管对 的操作是可以的)定义为“\t”后,v似乎不可能更改为“\\t”。v

Wil*_*ill 5

您需要转义反斜杠,这样它就不会被解释为特殊字符:

file_handle.write("\\t")
Run Code Online (Sandbox Code Playgroud)

编辑:看起来你最好的选择是使用 python 的优秀string.replace()函数:

>>> v = "aaa \t bbb"
>>> print v
aaa      bbb
>>> x = v.replace("\t", "\\t")  # <-- replace all '\t' in string with '\\t'
>>> print x
aaa \t bbb
Run Code Online (Sandbox Code Playgroud)

注意:v将保持不变,因为字符串在 python 中是不可变的

编辑2:

看起来转换为原始字符串将为您处理所有转义字符的转义:

>>> a = 'aaa\nbbb\n\tccc'
>>> print a
aaa
bbb
        ccc
>>> b = a.encode('string-escape')
>>> print b
aaa\nbbb\n\tccc
Run Code Online (Sandbox Code Playgroud)


Chr*_* W. 0

逃避它。

而不是\t写写\\t