如下,我希望将 "\100\200" 转换为 r"\100\200",应该怎样做?
>>> "\100\200"
'@\x80'
>>> r"\100\200"
'\\100\\200'
这个问题是在处理文件目录字符串时遇到的。
1
imn1 2017-02-06 15:29:34 +08:00 1
os.sep
|
2
doumeki 2017-02-06 15:47:20 +08:00 1
用 r"\100\200"难道不行,虽然打出来是两个杠。
目录分隔 os.sep 是正解。 |
4
doumeki 2017-02-06 17:44:18 +08:00
|
5
phrack 2017-02-06 18:53:41 +08:00 via Android
看不太懂例子,就是想把\n 这个换行符,换成两个符合 \ 加上一个 n 的字符串?
|
6
wizardforcel 2017-02-06 19:10:51 +08:00 via Android
每个字符替换为 \<oct>
|
8
shyling 2017-02-06 19:59:24 +08:00 1
a = '\n\n\n'
repr(a) -> "'\\n\\n\\n'" 可以再考虑去掉引号 _[1:-1] |
9
phrack 2017-02-06 20:07:42 +08:00 1
@DeTamble 自动化转换应该是不可能的,把\n 拿来举例子, python2.7
x = '\n' 实际上如果上面这个语句已经执行完,那么 x 实际上是一个长度为 1 的 str ,里面只有一个字节,是 0x0a ,也就是 10 ,如果要把它不转义打印出来,或者是存储到另外一个对象 y 里,那么我们也不能讲 y 里面就得存储\n ,因为不转义的话,实际上应该是\x0a ,这个\x0a 到\n 的过程是我们人类自己做的规定,如果你要把\x0a 换为\n ,要把\x0d 换为\r ,那就得有一个转换的表才行,而且这一整张表都得写出来: http://baike.baidu.com/view/73.htm ,这里没有考虑 unicode 的问题。 好像说的复杂了,也就是说\n, \r, 要从 0x0a, 0x0d 转换过来,需要一张表,当然, ascii 里面定义的转义字符不多,可以写到程序里就可以了,然后 for key, value in escape_table: x.replace( key, value ) 即可。 |