我想写" \ t"到一个文件。不是"制表符",而是字面意思" \ t"。 我该怎么做呢?它让我疯狂了一个多小时;我尝试的所有内容都会产生一个实际的"标签字符" (空白空间)。
为什么我要这个?因为我使用ConfigParser()生成配置文件,其中还包含一些分隔符,并且我希望该文件是人类可读的。我认为空白空间不可读。
编辑:抱歉,问题不明确:我想对包含字符串的变量执行此操作。所以写" \\ t"不是一种选择。我必须以一种在思想上等同于:
的方式将包含转义字符的变量的值写入文件v = "\t"
write(v)
而不更改v
的定义(尽管v
上的操作都可以)
似乎无法将v
更改为" \\ t"在将其定义为" \ t"。
答案 0 :(得分:2)
您需要转义反斜杠,以便它不会被解释为特殊字符:
file_handle.write("\\t")
编辑:看起来您最好的选择是使用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
注意:v
将保持不变,因为字符串在python中是不可变的
编辑2:
看起来转换为原始字符串会为您逃避所有转义字符:
>>> a = 'aaa\nbbb\n\tccc'
>>> print a
aaa
bbb
ccc
>>> b = a.encode('string-escape')
>>> print b
aaa\nbbb\n\tccc
答案 1 :(得分:0)
逃避它。
而不是写\t
写\\t
答案 2 :(得分:0)
假设v是'foo'。 你需要逃脱你的单反斜杠。
v = '\\t %s' % v
print(v)
返回:
\t foo
答案 3 :(得分:0)
>>> repr('\t')
"'\\t'"
答案 4 :(得分:0)
我找到了解码器解决方法!
from codecs import getencoder as ge, getdecoder as gd
v = "\t"
ge("unicode-escape")(v)[0]
v = gd("utf-8")(byteDelim)[0]
write(v)
使用编码器可以引入额外的&#34; \&#34;制作元组(b'\\t', 1)
。然后使用另一个不删除&#34; \&#34;的解码器解构元组中类字节的字符串,如utf-8
。