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已经可以在Python 2,因此在许多其他语言(它们是非常方便有时)。
由于字符串文字在 Python 2 中不是 unicode,因此创建了 u 字符串以提供对国际化的支持。从 Python 3 开始,u 字符串是默认字符串,因此“...”在语义上与 u“...” 相同。
最后,在这些中,f-string 是 Python 2 中唯一不支持的。
from __future__ import unicode_literals,这使得python 2几乎相同b-strings用于原始字节 - 不知道文本,而只是字节流.很少用作源的输入,通常是网络或低级代码的结果 - 以二进制格式读取数据,解压缩存档,使用加密库.
从/移动到B-string要str通过做.encode&.decode
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'分别
另一个值得注意的是f-strings,它是使用python 3.6实现的,它是一种简单而有效的格式化字符串的方法:
f'a equals {a} and b is {b}'将替换变量a并b在运行时.