相关疑难解决方法(0)

为什么Python的原始字符串文字不能以单个反斜杠结尾?

从技术上讲,任何奇数个反斜杠,如文档所述.

>>> r'\'
  File "<stdin>", line 1
    r'\'
       ^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
  File "<stdin>", line 1
    r'\\\'
         ^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

似乎解析器可以将原始字符串中的反斜杠视为常规字符(不是原始字符串的全部内容吗?),但我可能遗漏了一些明显的东西.TIA!

python string literals rawstring

157
推荐指数
6
解决办法
7万
查看次数

Python原始字符串和尾部反斜杠

我曾经碰过一些东西,想知道这是一个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\\\\'
Run Code Online (Sandbox Code Playgroud)

所以在结束引号之前的一个反斜杠是一个错误,但是两个反斜杠给你两个反斜杠!当然,我不是唯一一个被这个困扰的人吗?

关于为什么'原始'字符串是'原始的,除了反斜杠引用'的想法?我的意思是,如果我想在那里嵌入单引号,我只是在字符串周围使用双引号,反之亦然.如果我想要两者,我只是三重引用.如果我真的想在原始字符串中连续三个引号,那么,我想我必须处理,但这被认为是"正确的行为"吗?

对于Windows中的文件夹名称,这尤其成问题,其中反斜杠是路径分隔符.

python windows escaping

26
推荐指数
1
解决办法
6693
查看次数

为什么我不能用反斜杠结束原始字符串?

我在这里很困惑,即使原始字符串转换为每个\,\\\最后它出现时会引发错误.

>>> r'so\m\e \te\xt'
'so\\m\\e \\te\\xt'

>>> r'so\m\e \te\xt\'
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

更新:

现在也在Python常见问题解答中介绍:为什么原始字符串(r-strings)不能以反斜杠结尾?

python string rawstring

8
推荐指数
3
解决办法
3424
查看次数

python 3中的快速XORing字节

我需要xor 2字节对象.我用这个代码:

def bxor(b1, b2): # use xor for bytes
    result = b""
    for b1, b2 in zip(b1, b2):
        result += bytes([b1 ^ b2])
    return result
Run Code Online (Sandbox Code Playgroud)

当字节对象很小时,它工作正常,但如果我xor大对象(几MB)它需要很长时间(几个小时).我怎样才能让它更快?

python xor python-3.x

4
推荐指数
3
解决办法
5442
查看次数

标签 统计

python ×4

rawstring ×2

string ×2

escaping ×1

literals ×1

python-3.x ×1

windows ×1

xor ×1