das*_*ang 26 python windows escaping
我曾经碰过一些东西,想知道这是一个Python"bug"还是至少是一个错误的.我很好奇是否有人知道这种行为的任何理由.我刚想起了"像Python一样的代码",到目前为止一直很愉快.我只熟悉2.x系列的Python.
原始字符串是以前缀为前缀的字符串r.这很好,因为我可以在正则表达式中使用反斜杠,我不需要在任何地方加倍.在Windows上编写一次性脚本也很方便,所以我也可以在那里使用反斜杠.(我知道我也可以使用正斜杠,但是一次性脚本通常包含从Windows其他地方剪切和粘贴的内容.)
很好!当然,除非你真的希望你的字符串以反斜杠结尾.在'原始'字符串中没有办法做到这一点.
In [9]: r'\n'
Out[9]: '\\n'
In [10]: r'abc\n'
Out[10]: 'abc\\n'
In [11]: r'abc\'
------------------------------------------------
   File "<ipython console>", line 1
     r'abc\'
           ^
SyntaxError: EOL while scanning string literal
In [12]: r'abc\\'
Out[12]: 'abc\\\\'
所以在结束引号之前的一个反斜杠是一个错误,但是两个反斜杠给你两个反斜杠!当然,我不是唯一一个被这个困扰的人吗?
关于为什么'原始'字符串是'原始的,除了反斜杠引用'的想法?我的意思是,如果我想在那里嵌入单引号,我只是在字符串周围使用双引号,反之亦然.如果我想要两者,我只是三重引用.如果我真的想在原始字符串中连续三个引号,那么,我想我必须处理,但这被认为是"正确的行为"吗?
对于Windows中的文件夹名称,这尤其成问题,其中反斜杠是路径分隔符.
Joh*_*hin 19
这是一个FAQ.
并且回应"你真的希望你的字符串以反斜杠结束.在'原始'字符串中没有办法做到这一点.":常见问题解答显示了如何解决它.
>>> r'ab\c' '\\' == 'ab\\c\\'
True
>>>
| 归档时间: | 
 | 
| 查看次数: | 6693 次 | 
| 最近记录: |