r"string"b"string"u"string"Python 2/3比较

Bas*_*asj 2 python string python-2.7 python-3.x

我已经知道r"string"在Python 2.7中常用于正则表达式模式.我u"string"认为,我已经看到过Unicode字符串.现在使用Python 3,我们看到了b"string".

我在不同的来源/问题中搜索过这些内容,例如python字符串之前的ab前缀什么意思?但是很难在Python中看到带有前缀的所有这些字符串的大图,尤其是Python 2对3.

问题:您是否有经验可以记住Python中带有前缀的不同类型的字符串?(或者可能是一个包含Python 2列和一个Python 3列的表?)

注意:我已经阅读了几个问题+答案,但我没有找到一个容易记住与所有前缀/ Python 2 + 3的比较

Vit*_*SRG 13

来自文字的 python 文档:https : //docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

字节文字总是以“b”或“B”为前缀;它们生成 bytes 类型而不是 str 类型的实例。它们可能只包含 ASCII 字符;数值为 128 或更大的字节必须用转义符表示。

字符串和字节文字都可以选择以字母 'r' 或 'R' 为前缀;此类字符串称为原始字符串,并将反斜杠视为文字字符。因此,在字符串文字中,未对原始字符串中的 '\U' 和 '\u' 转义进行特殊处理。鉴于 Python 2.x 的原始 unicode 文字的行为与 Python 3.x 的不同,不支持“ur”语法。

前缀中带有 'f' 或 'F' 的字符串文字是格式化的字符串文字;请参阅格式化字符串文字。'f' 可以与 'r' 组合,但不能与 'b' 或 'u' 组合,因此原始格式化字符串是可能的,但格式化字节文字不是。

所以:

  • r表示原始
  • b表示字节
  • 你的意思是unicode
  • f表示格式

[Rb已经可以在Python 2,因此在许多其他语言(它们是非常方便有时)。

由于字符串文字在 Python 2 中不是 unicode,因此创建了 u 字符串以提供对国际化的支持。从 Python 3 开始,u 字符串是默认字符串,因此“...”在语义上与 u“...” 相同。

最后,在这些中,f-string 是 Python 2 中唯一不支持的。


Sla*_*lam 5

  1. u-strings如果是python中的unicode 2.最有可能你应该忘记这一点,如果你正在使用现代应用程序 - python 3中的默认字符串都是unicode,如果你从python 2迁移,你最有可能使用from __future__ import unicode_literals,这使得python 2几乎相同
  2. b-strings用于原始字节 - 不知道文本,而只是字节流.很少用作源的输入,通常是网络或低级代码的结果 - 以二进制格式读取数据,解压缩存档,使用加密库.

    从/移动到B-string要str通过做.encode&.decode

  3. r-strings不是专门用于正则表达式,这是"原始"字符串.与常规字符串文字不同,r-string对转义字符没有任何特殊含义.即正常字符串abc\n长度为4个字符,最后一个字符为"换行符"特殊字符.为了以字面值提供它,我们正在使用转义\.对于原始字符串,r'abc\n'是5长度的字符串,最后两个字符是字面意思\n.经常看到原始字符串的两个地方:

    • 正则表达式模式 - 不要乱丢在模式中的实际特殊字符

    • 文件为Windows系统路径的符号,因为Windows家庭使用\作为分隔符,普通的字符串字面的样子'C:\\dir\\file',或者'\\\\share\\dir',而原材料的还要好:r'C:\dir\file'r'\\share\dir'分别

  4. 另一个值得注意的是f-strings,它是使用python 3.6实现的,它是一种简单而有效的格式化字符串的方法:

    • f'a equals {a} and b is {b}'将替换变量ab在运行时.

  • 是的。即使在 python 2 中,你也可以执行 `from __future__ import unicode_literals`,并且该模块中的所有 `'hello'` 将等同于 `u'hello'`。Tho,“严格”有一个模糊的含义。类型名称不同,有些方法可能不同,但我们比较的是不同主要版本的语言,所以......大多数情况下它们是可以互换的 (2认同)