Python 原始字符串和尾随反斜杠[重复]

2024-05-04

我曾经遇到过一些东西,想知道它是否是一个 Python“bug”,或者至少是一个错误功能。我很好奇是否有人知道这种行为的任何理由。我刚刚在阅读《Code Like a Pythonista》时想到了这一点,到目前为止,这本书很有趣。我只熟悉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 中的文件夹名称来说,这尤其成问题,其中反斜杠是路径分隔符。


It's a FAQ http://docs.python.org/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash.

针对“您确实希望字符串以反斜杠结尾。在‘原始’字符串中无法做到这一点。”:常见问题解答显示了如何解决该问题。

>>> r'ab\c' '\\' == 'ab\\c\\'
True
>>>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 原始字符串和尾随反斜杠[重复] 的相关文章

随机推荐

  • 强制 Scala 特征实现某种方法

    有没有办法指定特征必须提供方法的具体实现 给定一些 mixin class A extends B with C foo 如果出现以下任一情况 程序将编译A B or C实施foo 但是我们如何才能强制 例如 B包含装有foo的实施 您可以
  • 装饰器错误:NoneType 对象不可调用

    我写了一个这样的函数装饰器 def tsfunc func def wrappedFunc print s called func name return func return wrappedFunc tsfunc def foo pas
  • Android 多点触控:ACTION_UP 并不总是被调用?

    我开发了一个在视图中处理多点触控的 Android 应用程序 我基本上跟踪可能发生的几个 MotionEvent 例如 ACTION UP ACTION MOVE 我在 View 类中覆盖的 onTouch 方法如下所示 public bo
  • Kafka 0.8.2 中是否可以向现有主题添加分区

    我有一个Kafka https kafka apache org 集群运行有 2 个分区 我一直在寻找一种将分区计数增加到 3 的方法 但是 我不想丢失有关该主题的现有消息 我尝试停下来Kafka https kafka apache or
  • 向 Windows 任务栏缩略图添加按钮 JavaFX?

    这个问题已经闲置一年多了 我的问题仍然没有解决方案 我编辑此内容是为了澄清我的问题并引起人们对它的新关注 如果您使用 Windows 您可能知道将程序图标悬停在任务栏上时显示的小预览图像 缩略图 某些程序 例如 Spotify Git 扩展
  • 从应用服务中运行的 .net core 应用程序发送日志以进行日志分析

    我尝试寻找 net core 2 0 应用程序将应用程序日志发送到日志分析工作区的最简单方法 该应用程序在azure中的应用服务下运行 我尝试启用 诊断设置 并将日志存档到日志分析 但是 我没有在 AppServiceHTTPLogs 中看
  • 两个具有共享缓冲区的等待线程(生产者/消费者)

    我试图让一堆生产者线程等待 直到缓冲区有空间容纳某个项目 然后将项目放入缓冲区 如果没有更多空间 则返回睡眠状态 同时应该有一堆消费者线程等待 直到缓冲区中有东西 然后尽可能地从缓冲区中获取东西 如果缓冲区为空则返回睡眠状态 在伪代码中 这
  • 如何使用 #pragma 在 G++ 中启用优化

    我想在没有命令行参数的情况下启用 g 优化 我知道 GCC 可以通过写来做到这一点 pragma GCC optimize 2 在我的代码中 但它似乎在 G 中不起作用 此页面可能有帮助 http gcc gnu org onlinedoc
  • 我如何解决 React+Material UI 中的此错误

    当我尝试在 Mac 和 Ubuntu 中运行该应用程序时 出现以下错误 但在Windows平台下运行没有任何错误 我该如何解决这个问题 Material UI beta 版本 v1 0 0 beta 46 中是否有任何平台特定的代码 我使用
  • pandas 数据框中不重叠的滚动窗口

    我熟悉 Pandas 滚动窗口函数 但它们的步长始终为 1 我想在 Pandas 中执行移动聚合函数 但条目不重叠 In this Dataframe df rolling 2 min 将产生 N A 519 566 727 1099 12
  • 场景 - 根据 iPad 或 iPhone 使用专用故事板

    Apple 现在希望我们使用 场景 而不是窗口和屏幕来显示 iPad 和 iPhone 的内容 现在添加了对场景的支持 我似乎失去了使用故事板定位 iPad 或 iPhone 的能力 I set my scenes inside plist
  • 突然我无法为 iPhone 模拟器构建

    有时人们真的很讨厌苹果的开发环境 说真的 有必要这么复杂吗 我的问题是这样的 我无法再在模拟器上构建我的项目 我收到以下错误 我意识到这是一个链接器错误 我不明白的是 1 为什么它突然不再工作 2 它为什么不会选择正确的 SDK 这是链接器
  • 检测字符串中的所有大写字母

    我在尝试在 JavaScript 中编写正则表达式时遇到问题 该正则表达式可以检测以全部大写字母键入的至少 2 个字符的整个单词 这是我尝试过的并且似乎有效 b Wa z0 9 b 但是 我会检测用户是否开始字符串 我喜欢你 因为 I 是大
  • Objective-C 中如何检查一个字符是否为数字?

    我需要检查一个字符是否是数字 NSString strTest Test55 char c strTest characterAtIndex 4 我需要找出 c 是否是数字 我怎样才能在 Objective C 中实现这个检查 Note 返
  • Android 模拟器冻结

    在上一个 SDK 版本发布之前 我的 Android 模拟器在 x86 架构上运行得非常好 安装了 Intel HAXM 并在 AVD Manager 中为设备启用了 GPU 使用最新的 SDK 版本 我重新安装了 Windows 从 8
  • 如何点击粘贴?它适用于谷歌文档

    我希望能够在用户单击时启动真正的粘贴事件 我可以理解这可能是一个安全问题 因为如果任何网页可以访问用户剪贴板 那就不好了 所以我认为所有浏览器都不允许访问剪贴板数据 但例如在 google 文档 在类似 word 的应用程序中 中 我可以从
  • 如何使水平条形图可滚动?

    目前正在尝试使用 MPAndroidChart 实现 Horizo ntalBarChart 但是 条形图太多 无法全部显示在屏幕上 仅当我放大时 Horizo ntalBarChart 才会滚动 但永远不会超过屏幕上已有的内容 不确定这是
  • Powershell send-mailmessage - 向多个收件人发送电子邮件

    我有这个 powershell 脚本来发送带有附件的电子邮件 但是当我添加多个收件人时 只有第一个收件人收到消息 我已经阅读了文档 但仍然无法弄清楚 谢谢 recipients Marcel lt email protected cdn c
  • 地图中的最大元素数

    GO 中的 Map 最多可以存储多少个元素 如果我需要经常从 Map 访问数据 那么在长时间运行的程序中不断向 Map 添加项目并从中检索项目是一个好主意吗 除了map length类型的最大值之外 map中的元素数量没有理论上的限制 in
  • Python 原始字符串和尾随反斜杠[重复]

    这个问题在这里已经有答案了 我曾经遇到过一些东西 想知道它是否是一个 Python bug 或者至少是一个错误功能 我很好奇是否有人知道这种行为的任何理由 我刚刚在阅读 Code Like a Pythonista 时想到了这一点 到目前为