【问题标题】:Should I use raw string by default?我应该默认使用原始字符串吗?
【发布时间】:2020-02-12 06:25:58
【问题描述】:

我知道像r'hello world' 这样的原始字符串可以防止转义。

即使字符串没有任何转义序列,总是在前面加上 r 符号是一种好习惯吗?

假设我的异常需要一些字符串文字解释,我需要连接到 url 是字符串文字的网站。他们没有反斜杠。原始字符串和普通字符串有性能差异吗?

【问题讨论】:

  • 如果需要特殊字符怎么办?例如换行符'\n'?
  • @wjandrea 只有这样,删除'r'
  • 我会说这样做违背了记谱者的意图。 rb 一样,表示 此引用文字中的符号是特殊的。它邀请读者以不同的方式解释反斜杠。如果没有,至少有一些读者会检查并重新检查并想知道他们错过了什么。

标签: python python-3.x escaping


【解决方案1】:

r sigil 表示“此字符串中的反斜杠是文字反斜杠”。将此符号放在不包含任何反斜杠的字符串上是无害的,但有时会使人类读者感到困惑。更好的方法可能是仅在您真正需要它时才使用它。

字符串目前可能不包含反斜杠,但您可能希望将来添加反斜杠的情况(例如在正则表达式和 Windows 文件路径中)可能会被视为有用的例外。

re.findall(r'hello', string)       # what if we switch to r'hello\.'?
with open(r'file.txt') as handle:  # what if we switch to r'sub\file.txt'?

添加反斜杠时很容易忘记添加r,因此提前提供它在这里有一些好处。

【讨论】:

    【解决方案2】:

    您可以在 Python 中做到这一点。但我不建议这样做,因为如果您添加类似 '\n' 之类的内容,它将无法正常工作。您可以在 Windows 上的 Regex 和路径中使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多