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

我曾几何时遇到过一个问题,想知道这是Python的“错误”还是至少是功能不当。我很好奇是否有人知道这种行为的任何理由。我刚才想到的是,阅读“到目前为止像Python一样的代码”。我只熟悉Python的2.x系列。

原始字符串是带有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中的文件夹名称,这尤其成问题,因为反斜杠是路径分隔符。

参考方案

这是FAQ。

并且响应“您确实希望您的字符串以反斜杠结尾。无法在“原始”字符串中执行此操作。”:FAQ显示了解决方法。

>>> r'ab\c' '\\' == 'ab\\c\\'
True
>>>

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…